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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]