diff --git a/src/xercesc/parsers/AbstractDOMParser.cpp b/src/xercesc/parsers/AbstractDOMParser.cpp
index 59ac6b1d12fe042f7cd422f3bad866b511de9133..6c62a6ac6e179433934fcb11ee85f6465047c2ac 100644
--- a/src/xercesc/parsers/AbstractDOMParser.cpp
+++ b/src/xercesc/parsers/AbstractDOMParser.cpp
@@ -169,8 +169,8 @@ void AbstractDOMParser::cleanUp()
     if (fDocumentVector)
         delete fDocumentVector;
 
-    if (!fDocumentAdoptedByUser)
-        delete fDocument;
+    if (!fDocumentAdoptedByUser && fDocument)
+        fDocument->release();
 
     delete fNodeStack;
     delete fScanner;