From acb441fdfacde4a4b0acb64fba5fb9eb4222a4fd Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 31 Oct 2002 15:12:53 +0000 Subject: [PATCH] fix issues reported by PMD git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273480 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/listener/AnsiColorLogger.java | 34 +++++++++---------- .../tools/ant/listener/Log4jListener.java | 2 -- .../apache/tools/ant/taskdefs/Javadoc.java | 2 +- .../tools/ant/taskdefs/condition/Socket.java | 2 +- .../ant/taskdefs/optional/PropertyFile.java | 8 ----- .../ant/taskdefs/optional/ccm/CCMCheck.java | 1 - .../taskdefs/optional/ccm/CCMReconfigure.java | 1 - .../taskdefs/optional/depend/ClassFile.java | 8 ++--- .../optional/depend/JarFileIterator.java | 19 ----------- .../taskdefs/optional/ide/VAJLocalUtil.java | 22 ------------ .../optional/j2ee/JonasHotDeploymentTool.java | 2 -- .../optional/jlink/ClassNameReader.java | 4 +-- .../taskdefs/optional/jlink/JlinkTask.java | 2 -- .../ant/taskdefs/optional/jlink/jlink.java | 6 ++-- .../ant/taskdefs/optional/jsp/WLJspc.java | 1 - .../optional/junit/JUnitTestRunner.java | 1 - .../ant/taskdefs/optional/pvcs/Pvcs.java | 5 ++- .../optional/sitraka/bytecode/ClassFile.java | 8 ++--- .../taskdefs/optional/vss/MSVSSCREATE.java | 1 - .../taskdefs/optional/vss/MSVSSHISTORY.java | 21 ------------ .../tools/ant/types/optional/image/Draw.java | 2 +- .../org/apache/tools/ant/util/FileUtils.java | 1 - .../util/depend/bcel/AncestorAnalyzer.java | 2 +- .../ant/util/depend/bcel/FullAnalyzer.java | 2 +- src/main/org/apache/tools/tar/TarUtils.java | 3 +- 25 files changed, 37 insertions(+), 123 deletions(-) diff --git a/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java b/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java index 1b258ac0e..ddf6a984b 100644 --- a/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java +++ b/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java @@ -134,31 +134,31 @@ import org.apache.tools.ant.Project; * @author Magesh Umasankar */ public final class AnsiColorLogger extends DefaultLogger { - private static final int ATTR_NORMAL = 0; - private static final int ATTR_BRIGHT = 1; + // private static final int ATTR_NORMAL = 0; + // private static final int ATTR_BRIGHT = 1; private static final int ATTR_DIM = 2; - private static final int ATTR_UNDERLINE = 3; - private static final int ATTR_BLINK = 5; - private static final int ATTR_REVERSE = 7; - private static final int ATTR_HIDDEN = 8; + // private static final int ATTR_UNDERLINE = 3; + // private static final int ATTR_BLINK = 5; + // private static final int ATTR_REVERSE = 7; + // private static final int ATTR_HIDDEN = 8; - private static final int FG_BLACK = 30; + // private static final int FG_BLACK = 30; private static final int FG_RED = 31; private static final int FG_GREEN = 32; - private static final int FG_YELLOW = 33; + // private static final int FG_YELLOW = 33; private static final int FG_BLUE = 34; private static final int FG_MAGENTA = 35; private static final int FG_CYAN = 36; - private static final int FG_WHITE = 37; + // private static final int FG_WHITE = 37; - private static final int BG_BLACK = 40; - private static final int BG_RED = 41; - private static final int BG_GREEN = 42; - private static final int BG_YELLOW = 44; - private static final int BG_BLUE = 44; - private static final int BG_MAGENTA = 45; - private static final int BG_CYAN = 46; - private static final int BG_WHITE = 47; + // private static final int BG_BLACK = 40; + // private static final int BG_RED = 41; + // private static final int BG_GREEN = 42; + // private static final int BG_YELLOW = 44; + // private static final int BG_BLUE = 44; + // private static final int BG_MAGENTA = 45; + // private static final int BG_CYAN = 46; + // private static final int BG_WHITE = 47; private static final String PREFIX = "\u001b["; private static final String SUFFIX = "m"; diff --git a/src/main/org/apache/tools/ant/listener/Log4jListener.java b/src/main/org/apache/tools/ant/listener/Log4jListener.java index 563153103..dd1888a02 100644 --- a/src/main/org/apache/tools/ant/listener/Log4jListener.java +++ b/src/main/org/apache/tools/ant/listener/Log4jListener.java @@ -69,8 +69,6 @@ import org.apache.tools.ant.Task; * @author Conor MacNeill */ public class Log4jListener implements BuildListener { - /** Log4j Configuration file */ - private static final String LOG4J_CONFIG_PROPERTY = "log4j.configuration"; /** Indicates if the listener was initialized. */ private boolean initialized = false; diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java index 1300b9f4b..5d3aae627 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java @@ -1644,7 +1644,7 @@ public class Javadoc extends Task { // is the href a valid URL try { URL base = new URL("file://."); - URL testHref = new URL(base, la.getHref()); + new URL(base, la.getHref()); } catch (MalformedURLException mue) { // ok - just skip log("Link href \"" + la.getHref() diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java b/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java index 27c658c54..e218d4fbb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java @@ -90,7 +90,7 @@ public class Socket extends ProjectComponent implements Condition { log("Checking for listener at " + server + ":" + port, Project.MSG_VERBOSE); try { - java.net.Socket socket = new java.net.Socket(server, port); + new java.net.Socket(server, port); } catch (IOException e) { return false; } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java index 6ee94ef61..0bc06caab 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java @@ -147,14 +147,6 @@ import org.apache.tools.ant.types.EnumeratedAttribute; */ public class PropertyFile extends Task { - /* ======================================================================== - * - * Static variables. - */ - - private static final String NEWLINE = System.getProperty("line.separator"); - - /* ======================================================================== * * Instance variables. diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java index ccd3577d6..9db940360 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java @@ -134,7 +134,6 @@ public class CCMCheck extends Continuus { */ public void execute() throws BuildException { Commandline commandLine = new Commandline(); - Project aProj = getProject(); int result = 0; // build the command line from what we got the format is diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java index 3c2ed151b..e66c5eb91 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMReconfigure.java @@ -85,7 +85,6 @@ public class CCMReconfigure extends Continuus { */ public void execute() throws BuildException { Commandline commandLine = new Commandline(); - Project aProj = getProject(); int result = 0; // build the command line from what we got the format diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java index d4cc9d70e..193a4f3ad 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java @@ -100,8 +100,8 @@ public class ClassFile { } // right we have a good looking class file. - int minorVersion = classStream.readUnsignedShort(); - int majorVersion = classStream.readUnsignedShort(); + /* int minorVersion = */ classStream.readUnsignedShort(); + /* int majorVersion = */ classStream.readUnsignedShort(); // read the constant pool in and resolve it constantPool = new ConstantPool(); @@ -109,9 +109,9 @@ public class ClassFile { constantPool.read(classStream); constantPool.resolve(); - int accessFlags = classStream.readUnsignedShort(); + /* int accessFlags = */ classStream.readUnsignedShort(); int thisClassIndex = classStream.readUnsignedShort(); - int superClassIndex = classStream.readUnsignedShort(); + /* int superClassIndex = */ classStream.readUnsignedShort(); ClassCPInfo classInfo = (ClassCPInfo) constantPool.getEntry(thisClassIndex); className = classInfo.getClassName(); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java index 39f657fa1..e54448cca 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java @@ -81,25 +81,6 @@ public class JarFileIterator implements ClassFileIterator { jarStream = new ZipInputStream(stream); } - /** - * Read a stream into an array of bytes - * - * @param stream the stream from which the bytes are read - * @return the stream's content as a byte array - * @exception IOException if the stream cannot be read - */ - private byte[] getEntryBytes(InputStream stream) throws IOException { - byte[] buffer = new byte[8192]; - ByteArrayOutputStream baos = new ByteArrayOutputStream(2048); - int n; - - while ((n = stream.read(buffer, 0, buffer.length)) != -1) { - baos.write(buffer, 0, n); - } - - return baos.toByteArray(); - } - /** * Get the next ClassFile object from the jar * diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLocalUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLocalUtil.java index c5c233ada..4c08bc995 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLocalUtil.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLocalUtil.java @@ -206,28 +206,6 @@ abstract class VAJLocalUtil implements VAJUtil{ } } - /** - * returns a list of project names matching the given pattern - */ - private Vector findMatchingProjects(String pattern) { - String[] projectNames; - try { - projectNames = getWorkspace().getRepository().getProjectNames(); - } catch (IvjException e) { - throw createBuildException("VA Exception occured: ", e); - } - - Vector matchingProjects = new Vector(); - for (int i = 0; i < projectNames.length; i++) { - if (VAJWorkspaceScanner.match(pattern, projectNames[i])) { - matchingProjects.addElement(projectNames[i]); - } - } - - return matchingProjects; - } - - /** * return project descriptions containing full project names instead * of patterns with wildcards. diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java index 456392222..418c8cb81 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java @@ -236,8 +236,6 @@ public class JonasHotDeploymentTool extends GenericHotDeploymentTool implements } } - String anAction = getTask().getAction(); - if (getServer() != null) { java.createArg().setLine("-n " + getServer()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java index 3584a4415..1929242bd 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java @@ -142,12 +142,12 @@ public class ClassNameReader extends Object { if (cookie != 0xCAFEBABE) { return null; } - int version = data.readInt(); + /* int version = */ data.readInt(); // read the constant pool. ConstantPool constants = new ConstantPool(data); Object[] values = constants.values; // read access flags and class index. - int accessFlags = data.readUnsignedShort(); + /* int accessFlags = */ data.readUnsignedShort(); int classIndex = data.readUnsignedShort(); Integer stringIndex = (Integer) values[classIndex]; String className = (String) values[stringIndex.intValue()]; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java index 2b8cae885..28ded56b4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java @@ -207,8 +207,6 @@ public class JlinkTask extends MatchingTask { private boolean compress = false; - private String ps = System.getProperty("path.separator"); - } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java index c2847233b..dc95ea896 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java @@ -320,8 +320,6 @@ public class jlink extends Object { */ private void addFile(ZipOutputStream output, File file, String prefix, boolean compress) throws IOException { //Make sure file exists - long checksum = 0; - if (!file.exists()) { return; } @@ -417,7 +415,7 @@ public class jlink extends Object { private long calcChecksum(File f) throws IOException { BufferedInputStream in = new BufferedInputStream(new FileInputStream(f)); - return calcChecksum(in, f.length()); + return calcChecksum(in); } @@ -425,7 +423,7 @@ public class jlink extends Object { * Necessary in the case where you add a entry that * is not compressed. */ - private long calcChecksum(InputStream in, long size) throws IOException { + private long calcChecksum(InputStream in) throws IOException { CRC32 crc = new CRC32(); int len = buffer.length; int count = -1; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java index 1b8b02bba..955eb6a65 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java @@ -165,7 +165,6 @@ public class WLJspc extends MatchingTask { File jspFile = null; String parents = ""; - String arg = ""; int j = 0; //XXX this array stuff is a remnant of prev trials.. gotta remove. args[j++] = "-d"; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java index 46177f352..90680448e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java @@ -469,7 +469,6 @@ public class JUnitTestRunner implements TestListener { * */ public static void main(String[] args) throws IOException { - boolean exitAtEnd = true; boolean haltError = false; boolean haltFail = false; boolean stackfilter = true; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java index 6ab23782b..19854880c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java @@ -122,10 +122,10 @@ public class Pvcs extends org.apache.tools.ant.Task { */ private static final String PCLI_EXE = "pcli"; - /** + /* * Constant for the PCLI listversionedfiles recursive i a format "get" understands */ - private static final String PCLI_LVF_ARGS = "lvf -z -aw"; + // private static final String PCLI_LVF_ARGS = "lvf -z -aw"; /** * Constant for the thing to execute @@ -164,7 +164,6 @@ public class Pvcs extends org.apache.tools.ant.Task { * @exception org.apache.tools.ant.BuildException Something is stopping the build... */ public void execute() throws org.apache.tools.ant.BuildException { - Project aProj = getProject(); int result = 0; if (repository == null || repository.trim().equals("")) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java index ab10c80fd..b6a511297 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/ClassFile.java @@ -86,9 +86,9 @@ public final class ClassFile { DataInputStream dis = new DataInputStream(is); ConstantPool constantPool = new ConstantPool(); - int magic = dis.readInt(); // 0xCAFEBABE - int minor = dis.readShort(); - int major = dis.readShort(); + /* int magic = */ dis.readInt(); // 0xCAFEBABE + /* int minor = */ dis.readShort(); + /* int major = */ dis.readShort(); constantPool.read(dis); constantPool.resolve(); @@ -97,7 +97,7 @@ public final class ClassFile { access_flags = dis.readShort(); int this_class = dis.readShort(); fullname = ((ClassCPInfo) constantPool.getEntry(this_class)).getClassName().replace('/', '.'); - int super_class = dis.readShort(); + /* int super_class = */ dis.readShort(); // skip interfaces... int count = dis.readShort(); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCREATE.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCREATE.java index b8e1c6434..5e2d05a15 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCREATE.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSCREATE.java @@ -113,7 +113,6 @@ import org.apache.tools.ant.types.Commandline; public class MSVSSCREATE extends MSVSS { private String m_AutoResponse = null; - private String m_Name = null; private String m_Comment = "-"; private boolean m_Quiet = false; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java index 119d35dc1..964e48b38 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSHISTORY.java @@ -301,16 +301,6 @@ public class MSVSSHISTORY extends MSVSS { } } - /** - * Builds the User command. - * @param cmd the commandline the command is to be added to - */ - private void getUserCommand(Commandline cmd) { - if (m_User != null) { - cmd.createArgument().setValue(FLAG_USER + m_User); - } - } - /** * Calculates the start date for version comparison. *

@@ -343,17 +333,6 @@ public class MSVSSHISTORY extends MSVSS { m_User = user; } - /** - * @return the 'recursive' command if the attribute was 'true', otherwise an empty string - */ - private void getRecursiveCommand(Commandline cmd) { - if (!m_Recursive) { - return; - } else { - cmd.createArgument().setValue(FLAG_RECURSION); - } - } - /** * Specify the output style; optional. * diff --git a/src/main/org/apache/tools/ant/types/optional/image/Draw.java b/src/main/org/apache/tools/ant/types/optional/image/Draw.java index 93b37955a..4a96706ba 100644 --- a/src/main/org/apache/tools/ant/types/optional/image/Draw.java +++ b/src/main/org/apache/tools/ant/types/optional/image/Draw.java @@ -120,7 +120,7 @@ public class Draw extends TransformOperation BufferedImage child = op.getAsBufferedImage(); log("\tDrawing to x=" + xloc + " y=" + yloc); graphics.drawImage(child, null, xloc, yloc); - PlanarImage test = PlanarImage.wrapRenderedImage(bi); + PlanarImage.wrapRenderedImage(bi); } } image = PlanarImage.wrapRenderedImage(bi); diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java index 7592af11a..7c8b00442 100644 --- a/src/main/org/apache/tools/ant/util/FileUtils.java +++ b/src/main/org/apache/tools/ant/util/FileUtils.java @@ -360,7 +360,6 @@ public class FileUtils { in = new BufferedReader(rdr); } - int length; String newline = null; String line = in.readLine(); while (line != null) { diff --git a/src/main/org/apache/tools/ant/util/depend/bcel/AncestorAnalyzer.java b/src/main/org/apache/tools/ant/util/depend/bcel/AncestorAnalyzer.java index eeab86942..664b68545 100644 --- a/src/main/org/apache/tools/ant/util/depend/bcel/AncestorAnalyzer.java +++ b/src/main/org/apache/tools/ant/util/depend/bcel/AncestorAnalyzer.java @@ -72,7 +72,7 @@ public class AncestorAnalyzer extends AbstractAnalyzer { public AncestorAnalyzer() { // force BCEL classes to load now try { - ClassParser parser = new ClassParser("force"); + new ClassParser("force"); } catch (IOException e) { // ignore } diff --git a/src/main/org/apache/tools/ant/util/depend/bcel/FullAnalyzer.java b/src/main/org/apache/tools/ant/util/depend/bcel/FullAnalyzer.java index 1e7d3c9aa..8259e2939 100644 --- a/src/main/org/apache/tools/ant/util/depend/bcel/FullAnalyzer.java +++ b/src/main/org/apache/tools/ant/util/depend/bcel/FullAnalyzer.java @@ -72,7 +72,7 @@ public class FullAnalyzer extends AbstractAnalyzer { public FullAnalyzer() { // force BCEL classes to load now try { - ClassParser parser = new ClassParser("force"); + new ClassParser("force"); } catch (IOException e) { // ignore } diff --git a/src/main/org/apache/tools/tar/TarUtils.java b/src/main/org/apache/tools/tar/TarUtils.java index 5fa18dcd6..a30dfa128 100644 --- a/src/main/org/apache/tools/tar/TarUtils.java +++ b/src/main/org/apache/tools/tar/TarUtils.java @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights + * Copyright (c) 2000,2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -157,7 +157,6 @@ public class TarUtils { * @return The integer value of the octal bytes. */ public static int getOctalBytes(long value, byte[] buf, int offset, int length) { - byte[] result = new byte[length]; int idx = length - 1; buf[offset + idx] = 0;