Handle case where parser returns a null document.
[shibboleth/cpp-xmltooling.git] / xmltooling / util / ParserPool.cpp
index 1ac8ef8..9397978 100644 (file)
@@ -122,7 +122,8 @@ DOMDocument* ParserPool::parse(DOMLSInput& domsrc)
         parser->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, dynamic_cast<DOMErrorHandler*>(&deh));
         DOMDocument* doc=parser->parse(&domsrc);
         if (deh.errors) {
-            doc->release();
+            if (doc)
+                doc->release();
             throw XMLParserException("XML error(s) during parsing, check log for specifics");
         }
         parser->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, (void*)NULL);
@@ -156,7 +157,8 @@ DOMDocument* ParserPool::parse(DOMInputSource& domsrc)
         parser->setErrorHandler(&deh);
         DOMDocument* doc=parser->parse(domsrc);
         if (deh.errors) {
-            doc->release();
+            if (doc)
+                doc->release();
             throw XMLParserException("XML error(s) during parsing, check log for specifics");
         }
         parser->setErrorHandler(NULL);