diff --git a/src/xercesc/parsers/DOMParser.cpp b/src/xercesc/parsers/DOMParser.cpp
index 59f04ffc46259d37f1f32c304910f68a9eb93425..b9b0fda613171a058342c3cc5c1d83c1bc1e7754 100644
--- a/src/xercesc/parsers/DOMParser.cpp
+++ b/src/xercesc/parsers/DOMParser.cpp
@@ -1072,7 +1072,11 @@ void DOMParser::endAttList
                     insertAttr = new AttrImpl((DocumentImpl*)fDocument.fImpl, attr->getFullName());
                 }
                 insertAttr->setValue(attr->getValue());
-                elem->setAttributeNode(insertAttr);
+                // memory leak here
+                AttrImpl * previousAttr = elem->setAttributeNode(insertAttr);
+				if ( previousAttr != 0 && previousAttr->nodeRefCount ==0)
+					NodeImpl::deleteIf(previousAttr);
+
                 insertAttr->setSpecified(false);
             }
         }