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]

Reply via email to