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]