neilg 2003/08/19 07:15:18 Modified: c/src/xercesc/parsers XercesDOMParser.cpp DOMBuilderImpl.cpp Log: fixing bug 21001; thanks to David Cargill Revision Changes Path 1.17 +19 -1 xml-xerces/c/src/xercesc/parsers/XercesDOMParser.cpp Index: XercesDOMParser.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/XercesDOMParser.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- XercesDOMParser.cpp 13 Aug 2003 15:43:24 -0000 1.16 +++ XercesDOMParser.cpp 19 Aug 2003 14:15:18 -0000 1.17 @@ -265,12 +265,18 @@ try { setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; } @@ -290,12 +296,18 @@ try { setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; } @@ -315,12 +327,18 @@ try { setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(source, grammarType, toCache); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; } 1.28 +20 -2 xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.cpp Index: DOMBuilderImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- DOMBuilderImpl.cpp 31 Jul 2003 17:05:48 -0000 1.27 +++ DOMBuilderImpl.cpp 19 Aug 2003 14:15:18 -0000 1.28 @@ -545,18 +545,24 @@ try { setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); // Release DOM tree - DTD DOMDocument* doc = adoptDocument(); if (doc) doc->release(); - + + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; } @@ -576,6 +582,8 @@ try { setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); // Release DOM tree - DTD @@ -583,11 +591,15 @@ if (doc) doc->release(); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; } @@ -609,6 +621,8 @@ Wrapper4DOMInputSource isWrapper((DOMInputSource*) &source, false, getMemoryManager()); setParseInProgress(true); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(isWrapper, grammarType, toCache); // Release DOM tree - DTD @@ -616,11 +630,15 @@ if (doc) doc->release(); + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); } catch(...) { + if (grammarType == Grammar::DTDGrammarType) + getScanner()->setDocTypeHandler(this); setParseInProgress(false); throw; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]