diff --git a/src/xercesc/internal/IGXMLScanner.cpp b/src/xercesc/internal/IGXMLScanner.cpp index 47d09fa1265a490bb38557a92afba83d6e3d6612..d606b5a430620811baf96567f8616c8ffc5a39df 100644 --- a/src/xercesc/internal/IGXMLScanner.cpp +++ b/src/xercesc/internal/IGXMLScanner.cpp @@ -1157,6 +1157,11 @@ void IGXMLScanner::scanEndTag(bool& gotData) // If we have a doc handler, tell it about the end tag if (fDocHandler) { + int prefixColonPos = XMLString::indexOf(elemName, chColon); + if (prefixColonPos == -1) + fPrefixBuf.reset(); + else + fPrefixBuf.set(elemName, prefixColonPos); fDocHandler->endElement ( *topElem->fThisElement diff --git a/src/xercesc/internal/SGXMLScanner.cpp b/src/xercesc/internal/SGXMLScanner.cpp index 24a789fd56422ea31be59547c72adacaa33627ee..4ad6815bb505f32c66b49fc5bcf6726527e3bfc2 100644 --- a/src/xercesc/internal/SGXMLScanner.cpp +++ b/src/xercesc/internal/SGXMLScanner.cpp @@ -1013,6 +1013,11 @@ void SGXMLScanner::scanEndTag(bool& gotData) // If we have a doc handler, tell it about the end tag if (fDocHandler) { + int prefixColonPos = XMLString::indexOf(elemName, chColon); + if (prefixColonPos == -1) + fPrefixBuf.reset(); + else + fPrefixBuf.set(elemName, prefixColonPos); fDocHandler->endElement ( *topElem->fThisElement diff --git a/src/xercesc/internal/XSAXMLScanner.cpp b/src/xercesc/internal/XSAXMLScanner.cpp index 26c9b8803bc6e6cd63a6cc436926a36e79a9bcd8..fb1a9fe79a7dee8172f31b0c5c7dbba70a5e7b5d 100644 --- a/src/xercesc/internal/XSAXMLScanner.cpp +++ b/src/xercesc/internal/XSAXMLScanner.cpp @@ -158,6 +158,11 @@ void XSAXMLScanner::scanEndTag(bool& gotData) // If we have a doc handler, tell it about the end tag if (fDocHandler) { + int prefixColonPos = XMLString::indexOf(elemName, chColon); + if (prefixColonPos == -1) + fPrefixBuf.reset(); + else + fPrefixBuf.set(elemName, prefixColonPos); fDocHandler->endElement ( *topElem->fThisElement, uriId, isRoot, fPrefixBuf.getRawBuffer()