tng 2002/08/16 06:39:27 Modified: c/src/xercesc/dom/impl DOMAttrImpl.cpp DOMAttrNSImpl.cpp DOMCDATASectionImpl.cpp DOMCommentImpl.cpp DOMDocumentFragmentImpl.cpp DOMDocumentImpl.cpp DOMDocumentTypeImpl.cpp DOMElementImpl.cpp DOMElementNSImpl.cpp DOMEntityImpl.cpp DOMEntityReferenceImpl.cpp DOMNotationImpl.cpp DOMProcessingInstructionImpl.cpp DOMTextImpl.cpp Log: [BUg 11360] Release user data using handler. Revision Changes Path 1.7 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMAttrImpl.cpp Index: DOMAttrImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMAttrImpl.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DOMAttrImpl.cpp 15 Jul 2002 19:22:22 -0000 1.6 +++ DOMAttrImpl.cpp 16 Aug 2002 13:39:27 -0000 1.7 @@ -251,6 +251,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ATTR_OBJECT); } 1.6 +3 -2 xml-xerces/c/src/xercesc/dom/impl/DOMAttrNSImpl.cpp Index: DOMAttrNSImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMAttrNSImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMAttrNSImpl.cpp 12 Aug 2002 19:58:57 -0000 1.5 +++ DOMAttrNSImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -177,6 +177,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ATTR_NS_OBJECT); } @@ -242,7 +243,7 @@ const XMLCh * URI = xmlnsAlone ? xmlnsURI : DOMNodeImpl::mapPrefix ( - fPrefix, + fPrefix, (XMLString::stringLen(namespaceURI) == 0) ? 0 : namespaceURI, DOMNode::ATTRIBUTE_NODE ); 1.8 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp Index: DOMCDATASectionImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMCDATASectionImpl.cpp 8 Aug 2002 14:15:47 -0000 1.7 +++ DOMCDATASectionImpl.cpp 16 Aug 2002 13:39:27 -0000 1.8 @@ -180,6 +180,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); fCharacterData.releaseBuffer(); doc->release(this, DOMDocumentImpl::CDATA_SECTION_OBJECT); 1.8 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMCommentImpl.cpp Index: DOMCommentImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMCommentImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMCommentImpl.cpp 8 Aug 2002 14:15:47 -0000 1.7 +++ DOMCommentImpl.cpp 16 Aug 2002 13:39:27 -0000 1.8 @@ -113,6 +113,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fCharacterData.releaseBuffer(); doc->release(this, DOMDocumentImpl::COMMENT_OBJECT); } 1.6 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp Index: DOMDocumentFragmentImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMDocumentFragmentImpl.cpp 15 Jul 2002 19:22:22 -0000 1.5 +++ DOMDocumentFragmentImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -123,6 +123,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::DOCUMENT_FRAGMENT_OBJECT); } 1.18 +6 -1 xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp Index: DOMDocumentImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- DOMDocumentImpl.cpp 12 Aug 2002 13:24:10 -0000 1.17 +++ DOMDocumentImpl.cpp 16 Aug 2002 13:39:27 -0000 1.18 @@ -1167,6 +1167,10 @@ void* data = userDataRecord->getKey(); handler->handle(operation, key, data, src, dst); } + + // if the operation is deleted, we in fact should remove the data from the table + if (operation == DOMUserDataHandler::NODE_DELETED) + node_userDataTable->removeKey((void*)key); } } } @@ -1206,6 +1210,7 @@ void DOMDocumentImpl::release() { DOMDocument* doc = (DOMDocument*) this; + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); // release the docType as well if (fDocType) { 1.11 +6 -2 xml-xerces/c/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp Index: DOMDocumentTypeImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- DOMDocumentTypeImpl.cpp 26 Jul 2002 20:31:23 -0000 1.10 +++ DOMDocumentTypeImpl.cpp 16 Aug 2002 13:39:27 -0000 1.11 @@ -386,6 +386,7 @@ if (fNode.isOwned()) { if (fNode.isToBeReleased()) { if (fIsCreatedFromHeap) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); DOMDocumentType* docType = this; delete docType; } @@ -395,13 +396,16 @@ } else { if (fIsCreatedFromHeap) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); DOMDocumentType* docType = this; delete docType; } else { DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); - if (doc) + if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); doc->release(this, DOMDocumentImpl::DOCUMENT_TYPE_OBJECT); + } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0); 1.11 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMElementImpl.cpp Index: DOMElementImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMElementImpl.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- DOMElementImpl.cpp 8 Aug 2002 14:15:47 -0000 1.10 +++ DOMElementImpl.cpp 16 Aug 2002 13:39:27 -0000 1.11 @@ -455,6 +455,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ELEMENT_OBJECT); } 1.6 +4 -3 xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.cpp Index: DOMElementNSImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMElementNSImpl.cpp 12 Aug 2002 19:58:57 -0000 1.5 +++ DOMElementNSImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -170,6 +170,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ELEMENT_NS_OBJECT); } @@ -215,11 +216,11 @@ if (index >= 3999) delete[] newName; } - + // DOM Level 3: namespace URI is never empty string. const XMLCh * URI = DOMNodeImpl::mapPrefix ( - fPrefix, + fPrefix, (XMLString::stringLen(namespaceURI) == 0) ? 0 : namespaceURI, DOMNode::ELEMENT_NODE ); 1.8 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp Index: DOMEntityImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMEntityImpl.cpp 30 Jul 2002 13:31:07 -0000 1.7 +++ DOMEntityImpl.cpp 16 Aug 2002 13:39:27 -0000 1.8 @@ -234,6 +234,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ENTITY_OBJECT); } 1.6 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp Index: DOMEntityReferenceImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMEntityReferenceImpl.cpp 15 Jul 2002 19:22:22 -0000 1.5 +++ DOMEntityReferenceImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -163,6 +163,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMDocumentImpl::ENTITY_REFERENCE_OBJECT); } 1.6 +4 -2 xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.cpp Index: DOMNotationImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMNotationImpl.cpp 15 Jul 2002 19:22:22 -0000 1.5 +++ DOMNotationImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -149,8 +149,10 @@ throw DOMException(DOMException::INVALID_ACCESS_ERR,0); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); - if (doc) + if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); doc->release(this, DOMDocumentImpl::NOTATION_OBJECT); + } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0); 1.6 +4 -2 xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp Index: DOMProcessingInstructionImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DOMProcessingInstructionImpl.cpp 15 Jul 2002 19:22:22 -0000 1.5 +++ DOMProcessingInstructionImpl.cpp 16 Aug 2002 13:39:27 -0000 1.6 @@ -167,8 +167,10 @@ throw DOMException(DOMException::INVALID_ACCESS_ERR,0); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); - if (doc) + if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); doc->release(this, DOMDocumentImpl::PROCESSING_INSTRUCTION_OBJECT); + } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0); 1.8 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMTextImpl.cpp Index: DOMTextImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMTextImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMTextImpl.cpp 8 Aug 2002 14:15:47 -0000 1.7 +++ DOMTextImpl.cpp 16 Aug 2002 13:39:27 -0000 1.8 @@ -184,6 +184,7 @@ DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { + fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fCharacterData.releaseBuffer(); doc->release(this, DOMDocumentImpl::TEXT_OBJECT); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]