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