peiyongz 2004/06/15 14:28:02 Modified: c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp Log: Memory Leakage Fixed , patch from David Bertoni Revision Changes Path 1.49 +6 -9 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.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- DGXMLScanner.cpp 2 Jun 2004 19:58:09 -0000 1.48 +++ DGXMLScanner.cpp 15 Jun 2004 21:28:02 -0000 1.49 @@ -853,6 +853,8 @@ , DTDElementDecl::Any , fGrammarPoolMemoryManager ); + + Janitor<DTDElementDecl> rootDeclJanitor(rootDecl); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); if(!fUseCachedGrammar) @@ -860,14 +862,8 @@ // this will break getRootElemId on DTDGrammar when // cached grammars are in use, but // why would one use this anyway??? - try { - ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl)); - } - catch(const XMLException&) - { - delete rootDecl; - throw; - } + ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl)); + rootDeclJanitor.release(); } else { // put this in the undeclared pool so it gets deleted... @@ -879,6 +875,7 @@ else { rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl)); + rootDeclJanitor.release(); } } 1.71 +6 -9 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.70 retrieving revision 1.71 diff -u -r1.70 -r1.71 --- IGXMLScanner.cpp 2 Jun 2004 19:58:09 -0000 1.70 +++ IGXMLScanner.cpp 15 Jun 2004 21:28:02 -0000 1.71 @@ -1349,6 +1349,8 @@ , DTDElementDecl::Any , fGrammarPoolMemoryManager ); + + Janitor<DTDElementDecl> rootDeclJanitor(rootDecl); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); if(!fUseCachedGrammar) @@ -1356,14 +1358,8 @@ // this will break getRootElemId on DTDGrammar when // cached grammars are in use, but // why would one use this anyway??? - try { - ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl)); - } - catch(const XMLException&) - { - delete rootDecl; - throw; - } + ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl)); + rootDeclJanitor.release(); } else { // attach this to the undeclared element pool so that it gets deleted @@ -1375,6 +1371,7 @@ else { rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl)); + rootDeclJanitor.release(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]