bodewig     2003/04/04 05:51:12

  Modified:    src/main/org/apache/tools/ant RuntimeConfigurable.java
               src/main/org/apache/tools/ant/listener MailLogger.java
               src/main/org/apache/tools/ant/taskdefs AntStructure.java
                        Concat.java FixCRLF.java Javadoc.java Replace.java
                        SQLExec.java
               src/main/org/apache/tools/ant/taskdefs/email Message.java
               src/main/org/apache/tools/ant/taskdefs/optional
                        ReplaceRegExp.java
               src/main/org/apache/tools/ant/taskdefs/optional/junit
                        JUnitTask.java
               src/main/org/apache/tools/ant/taskdefs/optional/perforce
                        P4Add.java P4Fstat.java
               src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode
                        Utils.java
               src/main/org/apache/tools/ant/types Commandline.java
                        Path.java
               src/main/org/apache/tools/ant/util DOMElementWriter.java
                        RegexpPatternMapper.java ResourceUtils.java
  Log:
  Avoid reusing StringBuffers to work around JDK 1.4.1 memory leak.
  
  I'm sure that my changes in most cases are of the paranoid type,
  ResourceUtils and FixCRLF look as if they really had a chance of
  running into trouble.
  
  Revision  Changes    Path
  1.29      +1 -1      
ant/src/main/org/apache/tools/ant/RuntimeConfigurable.java
  
  Index: RuntimeConfigurable.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/RuntimeConfigurable.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- RuntimeConfigurable.java  2 Apr 2003 11:43:41 -0000       1.28
  +++ RuntimeConfigurable.java  4 Apr 2003 13:51:11 -0000       1.29
  @@ -324,7 +324,7 @@
           id = (String) attributeMap.get("id");
   
           if (characters.length() != 0) {
  -            ProjectHelper.addText(p, wrappedObject, characters.toString());
  +            ProjectHelper.addText(p, wrappedObject, characters.substring(0));
           }
   
           Enumeration enum = children.elements();
  
  
  
  1.15      +2 -2      
ant/src/main/org/apache/tools/ant/listener/MailLogger.java
  
  Index: MailLogger.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/listener/MailLogger.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- MailLogger.java   10 Feb 2003 14:13:34 -0000      1.14
  +++ MailLogger.java   4 Apr 2003 13:51:11 -0000       1.15
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2002-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -158,7 +158,7 @@
               String subject = getValue(properties, prefix + ".subject",
                       (success) ? "Build Success" : "Build Failure");
   
  -            sendMail(mailhost, port, from, toList, subject, 
buffer.toString());
  +            sendMail(mailhost, port, from, toList, subject, 
buffer.substring(0));
           } catch (Exception e) {
               System.out.println("MailLogger failed to send e-mail!");
               e.printStackTrace(System.err);
  
  
  
  1.32      +4 -4      
ant/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
  
  Index: AntStructure.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/AntStructure.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- AntStructure.java 7 Mar 2003 11:23:00 -0000       1.31
  +++ AntStructure.java 4 Apr 2003 13:51:11 -0000       1.32
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -294,8 +294,8 @@
           sb.append(">");
           out.println(sb);
   
  -        sb.setLength(0);
  -        sb.append("<!ATTLIST ").append(name);
  +        sb = new StringBuffer("<!ATTLIST ");
  +        sb.append(name);
           sb.append(lSep).append("          id ID #IMPLIED");
   
           enum = ih.getAttributes();
  
  
  
  1.18      +2 -2      ant/src/main/org/apache/tools/ant/taskdefs/Concat.java
  
  Index: Concat.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Concat.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Concat.java       28 Mar 2003 12:41:01 -0000      1.17
  +++ Concat.java       4 Apr 2003 13:51:11 -0000       1.18
  @@ -412,7 +412,7 @@
   
               if (textBuffer != null) {
                   reader = new StringReader(
  -                    getProject().replaceProperties(textBuffer.toString()));
  +                    getProject().replaceProperties(textBuffer.substring(0)));
               } else {
                   reader =  new MultiReader();
               }
  @@ -476,7 +476,7 @@
        */
       private void sanitizeText() {
           if (textBuffer != null) {
  -            if (textBuffer.toString().trim().length() == 0) {
  +            if (textBuffer.substring(0).trim().length() == 0) {
                   textBuffer = null;
               }
           }
  
  
  
  1.45      +10 -10    ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
  
  Index: FixCRLF.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- FixCRLF.java      10 Feb 2003 14:13:34 -0000      1.44
  +++ FixCRLF.java      4 Apr 2003 13:51:11 -0000       1.45
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -720,7 +720,7 @@
   
           // process sequences of white space
           // first convert all tabs to spaces
  -        linebuf.setLength(0);
  +        linebuf = new StringBuffer();
           while ((nextTab = line.indexOf((int) '\t', place)) >= 0) {
               linebuf.append(line.substring(place, nextTab)); // copy to the 
TAB
               col += nextTab - place;
  @@ -731,7 +731,7 @@
           } // end of while
           linebuf.append(line.substring(place, line.length()));
           // if converting to spaces, all finished
  -        String linestring = new String(linebuf.toString());
  +        String linestring = new String(linebuf.substring(0));
           if (tabs == REMOVE) {
               try {
                   outWriter.write(linestring);
  @@ -740,7 +740,7 @@
               } // end of try-catch
           } else { // tabs == ADD
               int tabCol;
  -            linebuf2.setLength(0);
  +            linebuf2 = new StringBuffer();
               place = 0;
               col = bufline.getColumn();
               int placediff = col - 0;
  @@ -782,7 +782,7 @@
               linebuf2.append(linestring.substring(place, 
linestring.length()));
   
               try {
  -                outWriter.write(linebuf2.toString());
  +                outWriter.write(linebuf2.substring(0));
               } catch (IOException e) {
                   throw new BuildException(e);
               } // end of try-catch
  @@ -826,8 +826,8 @@
               int ch = -1;
               int eolcount = 0;
   
  -            eolStr.setLength(0);
  -            line.setLength(0);
  +            eolStr = new StringBuffer();
  +            line = new StringBuffer();
   
               try {
                   ch = reader.read();
  @@ -907,7 +907,7 @@
           }
   
           public String getEofStr() {
  -            return eofStr.toString();
  +            return eofStr.substring(0);
           }
   
           public int getState() {
  @@ -928,7 +928,7 @@
                   throw new NoSuchElementException("OneLiner");
               }
               BufferLine tmpLine =
  -                    new BufferLine(line.toString(), eolStr.toString());
  +                    new BufferLine(line.toString(), eolStr.substring(0));
               nextLine();
               return tmpLine;
           }
  
  
  
  1.111     +1 -1      ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  
  Index: Javadoc.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java,v
  retrieving revision 1.110
  retrieving revision 1.111
  diff -u -r1.110 -r1.111
  --- Javadoc.java      7 Mar 2003 11:23:02 -0000       1.110
  +++ Javadoc.java      4 Apr 2003 13:51:11 -0000       1.111
  @@ -362,7 +362,7 @@
            * @return the current text.
            */
           public String getText() {
  -            return text.toString();
  +            return text.substring(0);
           }
       }
   
  
  
  
  1.38      +2 -2      ant/src/main/org/apache/tools/ant/taskdefs/Replace.java
  
  Index: Replace.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Replace.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Replace.java      10 Feb 2003 14:13:36 -0000      1.37
  +++ Replace.java      4 Apr 2003 13:51:11 -0000       1.38
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -124,7 +124,7 @@
           }
   
           public String getText() {
  -            return buf.toString();
  +            return buf.substring(0);
           }
       }
   
  
  
  
  1.52      +2 -2      ant/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
  
  Index: SQLExec.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/SQLExec.java,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- SQLExec.java      14 Mar 2003 09:24:41 -0000      1.51
  +++ SQLExec.java      4 Apr 2003 13:51:11 -0000       1.52
  @@ -555,7 +555,7 @@
                       }
                       line.append(md.getColumnName(columnCount));
                       out.println(line);
  -                    line.setLength(0);
  +                    line = new StringBuffer();
                   }
                   while (rs.next()) {
                       boolean first = true;
  @@ -573,7 +573,7 @@
                           line.append(columnValue);
                       }
                       out.println(line);
  -                    line.setLength(0);
  +                    line = new StringBuffer();
                   }
               }
           }
  
  
  
  1.7       +2 -2      
ant/src/main/org/apache/tools/ant/taskdefs/email/Message.java
  
  Index: Message.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/email/Message.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Message.java      10 Feb 2003 14:13:45 -0000      1.6
  +++ Message.java      4 Apr 2003 13:51:11 -0000       1.7
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -162,7 +162,7 @@
                   freader.close();
               }
           } else {
  -            out.println(getProject().replaceProperties(buffer.toString()));
  +            out.println(getProject().replaceProperties(buffer.substring(0)));
           }
       }
   
  
  
  
  1.18      +3 -3      
ant/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
  
  Index: ReplaceRegExp.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ReplaceRegExp.java        10 Feb 2003 14:13:45 -0000      1.17
  +++ ReplaceRegExp.java        4 Apr 2003 13:51:11 -0000       1.18
  @@ -365,7 +365,7 @@
                               pw.print(res);
                               pw.print('\r');
   
  -                            linebuf.setLength(0);
  +                            linebuf = new StringBuffer();
                               // hasCR is still true (for the second one)
                           } else {
                               // first CR in this line
  @@ -388,7 +388,7 @@
                           }
                           pw.print('\n');
   
  -                        linebuf.setLength(0);
  +                        linebuf = new StringBuffer();
                       } else { // any other char
                           if ((hasCR) || (c < 0)) {
                               // Mac-style linebreak or EOF (or both)
  @@ -405,7 +405,7 @@
                                   hasCR = false;
                               }
   
  -                            linebuf.setLength(0);
  +                            linebuf = new StringBuffer();
                           }
   
                           if (c >= 0) {
  
  
  
  1.61      +2 -2      
ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  
  Index: JUnitTask.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- JUnitTask.java    31 Mar 2003 13:46:18 -0000      1.60
  +++ JUnitTask.java    4 Apr 2003 13:51:12 -0000       1.61
  @@ -640,7 +640,7 @@
                   formatterArg.append(outFile);
               }
               cmd.createArgument().setValue(formatterArg.toString());
  -            formatterArg.setLength(0);
  +            formatterArg = new StringBuffer();
           }
   
           // Create a temporary file to pass the Ant properties to the
  
  
  
  1.14      +1 -1      
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java
  
  Index: P4Add.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- P4Add.java        10 Feb 2003 14:14:18 -0000      1.13
  +++ P4Add.java        4 Apr 2003 13:51:12 -0000       1.14
  @@ -145,7 +145,7 @@
                       filelist.append(" 
").append('"').append(f.getAbsolutePath()).append('"');
                       if (filelist.length() > cmdLength) {
                           execP4Add(filelist);
  -                        filelist.setLength(0);
  +                        filelist = new StringBuffer();
                       }
                   }
                   if (filelist.length() > 0) {
  
  
  
  1.5       +1 -1      
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java
  
  Index: P4Fstat.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- P4Fstat.java      4 Apr 2003 13:02:40 -0000       1.4
  +++ P4Fstat.java      4 Apr 2003 13:51:12 -0000       1.5
  @@ -165,7 +165,7 @@
                       if (filelist.length() > cmdLength) {
   
                           execP4Fstat(filelist);
  -                        filelist.setLength(0);
  +                        filelist = new StringBuffer();
                       }
                   }
                   if (filelist.length() > 0) {
  
  
  
  1.9       +3 -3      
ant/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/Utils.java
  
  Index: Utils.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/bytecode/Utils.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Utils.java        10 Feb 2003 14:14:23 -0000      1.8
  +++ Utils.java        4 Apr 2003 13:51:12 -0000       1.9
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -122,8 +122,8 @@
           StringBuffer param = new StringBuffer();
           i++;
           while ((i = descriptor2java(descriptor, i, param)) < 
descriptor.length()) {
  -            params.add(param.toString());
  -            param.setLength(0); // reset
  +            params.add(param.substring(0));
  +            param = new StringBuffer();
               if (descriptor.charAt(i) == ')') {
                   i++;
                   break;
  
  
  
  1.28      +2 -2      ant/src/main/org/apache/tools/ant/types/Commandline.java
  
  Index: Commandline.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Commandline.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Commandline.java  7 Mar 2003 11:23:07 -0000       1.27
  +++ Commandline.java  4 Apr 2003 13:51:12 -0000       1.28
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -399,7 +399,7 @@
                   } else if (" ".equals(nextTok)) {
                       if (lastTokenHasBeenQuoted || current.length() != 0) {
                           v.addElement(current.toString());
  -                        current.setLength(0);
  +                        current = new StringBuffer();
                       }
                   } else {
                       current.append(nextTok);
  
  
  
  1.48      +1 -1      ant/src/main/org/apache/tools/ant/types/Path.java
  
  Index: Path.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Path.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- Path.java 11 Mar 2003 10:57:42 -0000      1.47
  +++ Path.java 4 Apr 2003 13:51:12 -0000       1.48
  @@ -397,7 +397,6 @@
           PathTokenizer tok = new PathTokenizer(source);
           StringBuffer element = new StringBuffer();
           while (tok.hasMoreTokens()) {
  -            element.setLength(0);
               String pathElement = tok.nextToken();
               try {
                   element.append(resolveFile(project, pathElement));
  @@ -410,6 +409,7 @@
                   translateFileSep(element, i);
               }
               result.addElement(element.toString());
  +            element = new StringBuffer();
           }
           String[] res = new String[result.size()];
           result.copyInto(res);
  
  
  
  1.18      +2 -3      
ant/src/main/org/apache/tools/ant/util/DOMElementWriter.java
  
  Index: DOMElementWriter.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/DOMElementWriter.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- DOMElementWriter.java     4 Apr 2003 08:36:22 -0000       1.17
  +++ DOMElementWriter.java     4 Apr 2003 13:51:12 -0000       1.18
  @@ -80,7 +80,6 @@
   public class DOMElementWriter {
   
       private static String lSep = System.getProperty("line.separator");
  -    private StringBuffer sb = new StringBuffer();
   
       /**
        * Don't try to be too smart but at least recognize the predefined
  @@ -204,7 +203,7 @@
        * drop characters that are illegal in XML documents.
        */
       public String encode(String value) {
  -        sb.setLength(0);
  +        StringBuffer sb = new StringBuffer();
           int len = value.length();
           for (int i = 0; i < len; i++) {
               char c = value.charAt(i);
  @@ -254,7 +253,7 @@
   
        */
       public String encodedata(final String value) {
  -        sb.setLength(0);
  +        StringBuffer sb = new StringBuffer();
           for (int i = 0; i < value.length(); ++i) {
               char c = value.charAt(i);
               if (isLegalCharacter(c)) {
  
  
  
  1.9       +2 -2      
ant/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java
  
  Index: RegexpPatternMapper.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- RegexpPatternMapper.java  7 Mar 2003 11:23:08 -0000       1.8
  +++ RegexpPatternMapper.java  4 Apr 2003 13:51:12 -0000       1.9
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000,2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000,2002-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -133,7 +133,7 @@
                   result.append(to[i]);
               }
           }
  -        return result.toString();
  +        return result.substring(0);
       }
   
   }
  
  
  
  1.2       +1 -2      ant/src/main/org/apache/tools/ant/util/ResourceUtils.java
  
  Index: ResourceUtils.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/ResourceUtils.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResourceUtils.java        19 Feb 2003 07:57:29 -0000      1.1
  +++ ResourceUtils.java        4 Apr 2003 13:51:12 -0000       1.2
  @@ -89,7 +89,6 @@
                                                       FileNameMapper mapper,
                                                       ResourceFactory targets) 
{
           long now = (new java.util.Date()).getTime();
  -        StringBuffer targetList = new StringBuffer();
   
           /*
             If we're on Windows, we have to munge the time up to 2 secs to
  @@ -116,7 +115,7 @@
                                      .replace('/', File.separatorChar));
               if (targetnames != null) {
                   boolean added = false;
  -                targetList.setLength(0);
  +                StringBuffer targetList = new StringBuffer();
                   for (int ctarget = 0; !added && ctarget < 
targetnames.length; 
                        ctarget++) {
                       Resource atarget = 
  
  
  

Reply via email to