Thanks Magesh. I'll try to be carefull with indentation next time. Regards, Frederic
> -----Original Message----- > From: Magesh Umasankar [mailto:[EMAIL PROTECTED] > Sent: Friday, May 24, 2002 3:55 PM > To: Ant Developers List > Subject: Re: [PATCH] a patch for > 'org.apache.tools.ant.filters.LineContains' to work with large files > > > Patched, thanks! > > Please send your future patches with 4-space > indentations as we like the code that way. > > Cheers, > Magesh > > ********************************************** > * Philosopher: A fool who torments himself * > * during life, to be spoken of when dead. * > ********************************************** > ----- Original Message ----- > From: "Frederic Pesquet" <[EMAIL PROTECTED]> > To: "Ant Developers List" <[EMAIL PROTECTED]> > Sent: Friday, May 24, 2002 5:23 AM > Subject: [PATCH] a patch for > 'org.apache.tools.ant.filters.LineContains' to > work with large files > > > > Hello, > > > > The filter 'org.apache.tools.ant.filters.LineContains' does not > work well > > with big files. > > There is a recursive call in read() to find a matching line, > which causes > a > > stack overflow in the JVM when the file is too large. > > I've patched the code of read() so that the loop to find a matching line > > does not perform a recursive call. > > It works for me. > > Joined is the patch file of LineContains.java on the source of Ant1.5 > beta1 > > (=the current CVS source as far as I can see through the CVS Web > interface). > > Can someone integrate this patch in the source tree? > > Thanks, > > Frederic > > > > PS: this is the first time I submit a patch, please forgive me > if this is > > not the right procedure: I just tried to follow the guidelines. > > > > -- > > Frederic Pesquet - ILOG S.A. (Sophia-Antipolis) > > mail:[EMAIL PROTECTED] > > > > *************************** diff file begin *********************** > > --- LineContains.java.orig Fri May 24 11:13:42 2002 > > +++ LineContains.java Fri May 24 11:13:35 2002 > > @@ -143,21 +143,25 @@ > > line = line.substring(1); > > } > > } else { > > - line = readLine(); > > - if (line == null) { > > - ch = -1; > > - } else { > > - int containsSize = contains.size(); > > - for (int i = 0; i < containsSize; i++) { > > - String containsStr = (String) > contains.elementAt(i); > > - if (line.indexOf(containsStr) == -1) { > > - line = null; > > - break; > > - } > > + String goodLine=null; > > + line = readLine(); > > + while((line!=null) && (goodLine==null)) > > + { > > + goodLine=line; > > + int containsSize = contains.size(); > > + for (int i = 0; i < containsSize; i++) { > > + String containsStr = (String) contains.elementAt(i); > > + if (line.indexOf(containsStr) == -1) { > > + goodLine = null; > > + break; > > } > > - > > - return read(); > > } > > + line = readLine(); > > + } > > + if (goodLine != null) { > > + line=goodLine; > > + return read(); > > + }; > > } > > > > return ch; > > *************************** diff file end *********************** > > > > > > -- > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
