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