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/12/03 18:01:58 UTC

cvs commit: xml-xerces/c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp

amassari    2004/12/03 09:01:58

  Modified:    c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp
  Log:
  When caching is on, we asked the entity resolver for the DTD; later, we asked it again to really parse it
  
  Revision  Changes    Path
  1.56      +31 -20    xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp
  
  Index: DGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- DGXMLScanner.cpp	24 Nov 2004 21:04:16 -0000	1.55
  +++ DGXMLScanner.cpp	3 Dec 2004 17:01:58 -0000	1.56
  @@ -970,11 +970,12 @@
       //  next. If we are reusing the validator, then don't scan it.
       if (hasExtSubset) {
   
  +        InputSource* srcUsed=0;
  +        Janitor<InputSource> janSrc(srcUsed);
           if (fUseCachedGrammar)
           {
  -            InputSource* sysIdSrc = resolveSystemId(sysId);
  -            Janitor<InputSource> janSysIdSrc(sysIdSrc);
  -            Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId());
  +            srcUsed = resolveSystemId(sysId);
  +            Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId());
   
               if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) {
   
  @@ -1019,21 +1020,29 @@
           if (fLoadExternalDTD || fValidate)
           {
               // And now create a reader to read this entity
  -            InputSource* srcUsed;
  -            XMLReader* reader = fReaderMgr.createReader
  -            (
  -                sysId
  -                , pubId
  -                , false
  -                , XMLReader::RefFrom_NonLiteral
  -                , XMLReader::Type_General
  -                , XMLReader::Source_External
  -                , srcUsed
  -                , fCalculateSrcOfs
  -            );
  -
  -            // Put a janitor on the input source
  -            Janitor<InputSource> janSrc(srcUsed);
  +            XMLReader* reader;
  +            if(srcUsed!=0)
  +                reader = fReaderMgr.createReader
  +                        (
  +                            *srcUsed
  +                            , false
  +                            , XMLReader::RefFrom_NonLiteral
  +                            , XMLReader::Type_General
  +                            , XMLReader::Source_External
  +                            , fCalculateSrcOfs
  +                        );
  +            else
  +                reader = fReaderMgr.createReader
  +                        (
  +                            sysId
  +                            , pubId
  +                            , false
  +                            , XMLReader::RefFrom_NonLiteral
  +                            , XMLReader::Type_General
  +                            , XMLReader::Source_External
  +                            , srcUsed
  +                            , fCalculateSrcOfs
  +                        );
   
               //  If it failed then throw an exception
               if (!reader)
  @@ -2481,8 +2490,10 @@
           if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
               expSysId.set(normalizedURI);
   
  +        ReaderMgr::LastExtEntityInfo lastInfo;
  +        fReaderMgr.getLastExtEntityInfo(lastInfo);
           XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity,
  -                            expSysId.getRawBuffer());
  +                            expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId);
           srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier);
       }
       else
  
  
  
  1.79      +28 -19    xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp
  
  Index: IGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- IGXMLScanner.cpp	24 Nov 2004 21:04:16 -0000	1.78
  +++ IGXMLScanner.cpp	3 Dec 2004 17:01:58 -0000	1.79
  @@ -1421,11 +1421,12 @@
       //  next. If we are reusing the validator, then don't scan it.
       if (hasExtSubset) {
   
  +        InputSource* srcUsed=0;
  +        Janitor<InputSource> janSrc(srcUsed);
           if (fUseCachedGrammar)
           {
  -            InputSource* sysIdSrc = resolveSystemId(sysId);
  -            Janitor<InputSource> janSysIdSrc(sysIdSrc);
  -            Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId());
  +            srcUsed = resolveSystemId(sysId);
  +            Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId());
   
               if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) {
   
  @@ -1468,21 +1469,29 @@
           if (fLoadExternalDTD || fValidate)
           {
               // And now create a reader to read this entity
  -            InputSource* srcUsed;
  -            XMLReader* reader = fReaderMgr.createReader
  -            (
  -                sysId
  -                , pubId
  -                , false
  -                , XMLReader::RefFrom_NonLiteral
  -                , XMLReader::Type_General
  -                , XMLReader::Source_External
  -                , srcUsed
  -                , fCalculateSrcOfs
  -            );
  -
  -            // Put a janitor on the input source
  -            Janitor<InputSource> janSrc(srcUsed);
  +            XMLReader* reader;
  +            if(srcUsed!=0)
  +                reader = fReaderMgr.createReader
  +                        (
  +                            *srcUsed
  +                            , false
  +                            , XMLReader::RefFrom_NonLiteral
  +                            , XMLReader::Type_General
  +                            , XMLReader::Source_External
  +                            , fCalculateSrcOfs
  +                        );
  +            else
  +                reader = fReaderMgr.createReader
  +                        (
  +                            sysId
  +                            , pubId
  +                            , false
  +                            , XMLReader::RefFrom_NonLiteral
  +                            , XMLReader::Type_General
  +                            , XMLReader::Source_External
  +                            , srcUsed
  +                            , fCalculateSrcOfs
  +                        );
   
               //  If it failed then throw an exception
               if (!reader)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org