sandygao 2002/11/28 10:51:28 Modified: java/src/org/apache/xerces/util XMLGrammarPoolImpl.java Log: Fixing bug 14915: possible array index exception if there are more than 11 grammars in the grammar pool. Revision Changes Path 1.3 +8 -2 xml-xerces/java/src/org/apache/xerces/util/XMLGrammarPoolImpl.java Index: XMLGrammarPoolImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/util/XMLGrammarPoolImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XMLGrammarPoolImpl.java 19 Jun 2002 16:48:47 -0000 1.2 +++ XMLGrammarPoolImpl.java 28 Nov 2002 18:51:28 -0000 1.3 @@ -102,6 +102,9 @@ // whether this pool is locked protected boolean fPoolIsLocked; + // the number of grammars in the pool + protected int fGrammarCount = 0; + private static final boolean DEBUG = false ; // @@ -137,7 +140,7 @@ public Grammar [] retrieveInitialGrammarSet (String grammarType) { synchronized (fGrammars) { int grammarSize = fGrammars.length ; - Grammar [] tempGrammars = new Grammar[grammarSize]; + Grammar [] tempGrammars = new Grammar[fGrammarCount]; int pos = 0; for (int i = 0; i < grammarSize; i++) { for (Entry e = fGrammars[i]; e != null; e = e.next) { @@ -223,6 +226,7 @@ // create a new entry Entry entry = new Entry(hash, desc, grammar, fGrammars[index]); fGrammars[index] = entry; + fGrammarCount++; } } } // putGrammar(Grammar) @@ -270,6 +274,7 @@ } Grammar tempGrammar = entry.grammar; entry.grammar = null; + fGrammarCount--; return tempGrammar; } } @@ -324,6 +329,7 @@ fGrammars[i] = null; } } + fGrammarCount = 0; } // clear() /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]