You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2002/11/28 19:51:28 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/util XMLGrammarPoolImpl.java

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: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org