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); } }