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()