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]>

Reply via email to