You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2004/08/27 20:03:29 UTC
cvs commit: xml-xerces/c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp
amassari 2004/08/27 11:03:29
Modified: c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp
Log:
If the user registers a PSVIHandler and turns on grammar caching, then calls loadSchemaGrammar() and parse(), fModel becomes invalid and a crash occurs
Revision Changes Path
1.68 +5 -1 xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
Index: IGXMLScanner2.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -r1.67 -r1.68
--- IGXMLScanner2.cpp 12 Jul 2004 13:36:13 -0000 1.67
+++ IGXMLScanner2.cpp 27 Aug 2004 18:03:28 -0000 1.68
@@ -1201,6 +1201,10 @@
fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar);
fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar);
+ // fModel may need updating, as fGrammarResolver could have cleaned it
+ if(fModel && getPSVIHandler())
+ fModel = fGrammarResolver->getXSModel();
+
{
XMLDTDDescriptionImpl theDTDDescription(XMLUni::fgDTDEntityString, fMemoryManager);
fDTDGrammar = (DTDGrammar*) fGrammarResolver->getGrammar(&theDTDDescription);
1.91 +5 -1 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp
Index: SGXMLScanner.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- SGXMLScanner.cpp 12 Jul 2004 19:55:19 -0000 1.90
+++ SGXMLScanner.cpp 27 Aug 2004 18:03:28 -0000 1.91
@@ -3171,6 +3171,10 @@
fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar);
fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar);
+ // fModel may need updating, as fGrammarResolver could have cleaned it
+ if(fModel && getPSVIHandler())
+ fModel = fGrammarResolver->getXSModel();
+
fGrammar = fSchemaGrammar;
fGrammarType = Grammar::DTDGrammarType;
fRootGrammar = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org