Index: RECompiler.java =================================================================== RCS file: /home/cvspublic/jakarta-regexp/src/java/org/apache/regexp/RECompiler.java,v retrieving revision 1.8 diff -u -b -r1.8 RECompiler.java --- RECompiler.java 13 Dec 2002 18:40:16 -0000 1.8 +++ RECompiler.java 3 Feb 2003 14:57:27 -0000 @@ -98,7 +98,7 @@ static final char ESC_CLASS = 0xfffd; // Escape represents a whole class of characters // {m,n} stacks - static final int maxBrackets = 10; // Maximum number of bracket pairs + static int maxBrackets = 10; // Initial max number of bracket pairs static final int bracketUnbounded = -1; // Unbounded value static final int bracketFinished = -2; // Unbounded value int brackets = 0; // Number of bracket sets @@ -291,6 +291,32 @@ } } + /** Enlarge storage for brackets only as needed. */ + synchronized void reallocBrackets() { + // trick the tricky + if( bracketStart == null ) + allocBrackets(); + + int new_size = maxBrackets * 2; + int[] new_bS = new int[ new_size ]; + int[] new_bE = new int[ new_size ]; + int[] new_bM = new int[ new_size ]; + int[] new_bO = new int[ new_size ]; + // Initialize to invalid values + for( int i=brackets; i= maxBrackets) { - syntaxError("Too many bracketed closures (limit is 10)"); + // no limit anymore + reallocBrackets(); } bracketStart[brackets] = idx; bracket();