amassari 2004/12/23 06:21:27 Modified: c/src/xercesc/internal IGXMLScanner.cpp SGXMLScanner.cpp XSAXMLScanner.cpp Log: Don't use the content of fPrefixBuf inside the end tag handler, as it is modified by the nearest start tag: instead retrieve the current prefix from the end tag string [jira#1308] Revision Changes Path 1.82 +6 -1 xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp Index: IGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- IGXMLScanner.cpp 7 Dec 2004 19:45:43 -0000 1.81 +++ IGXMLScanner.cpp 23 Dec 2004 14:21:27 -0000 1.82 @@ -1157,6 +1157,11 @@ // 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 1.103 +6 -1 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp Index: SGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v retrieving revision 1.102 retrieving revision 1.103 diff -u -r1.102 -r1.103 --- SGXMLScanner.cpp 9 Dec 2004 20:31:39 -0000 1.102 +++ SGXMLScanner.cpp 23 Dec 2004 14:21:27 -0000 1.103 @@ -1013,6 +1013,11 @@ // 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 1.3 +6 -1 xml-xerces/c/src/xercesc/internal/XSAXMLScanner.cpp Index: XSAXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSAXMLScanner.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSAXMLScanner.cpp 29 Sep 2004 23:25:42 -0000 1.2 +++ XSAXMLScanner.cpp 23 Dec 2004 14:21:27 -0000 1.3 @@ -158,6 +158,11 @@ // 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()
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]