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