diff --git a/src/dom/DocumentImpl.cpp b/src/dom/DocumentImpl.cpp index 7b0c3f0fca8281e791544f2325cef83c7acc0579..04cc4f5e6f62fe33f24cf13f6be49f47437016f6 100644 --- a/src/dom/DocumentImpl.cpp +++ b/src/dom/DocumentImpl.cpp @@ -750,14 +750,20 @@ bool DocumentImpl::isKidOK(NodeImpl *parent, NodeImpl *child) void DocumentImpl::setUserData(NodeImpl* n, void* data) { - if (!userData) + if (!userData && data) userData = new RefHashTableOf<void>(29, false, new HashPtr()); - userData->put((void*)n,data); + if (!data && userData) + userData->removeKey((void*)n); + else + userData->put((void*)n,data); } void* DocumentImpl::getUserData(NodeImpl* n) { - return userData->get((void*)n); + if (userData) + return userData->get((void*)n); + else + return null; } void* DocumentImpl::getUserData() diff --git a/src/dom/NodeImpl.cpp b/src/dom/NodeImpl.cpp index 67617176ceed11047d8f8f448a2a6989b7b2c197..b83d494ff2d60f915f09823736c40041ca5488ff 100644 --- a/src/dom/NodeImpl.cpp +++ b/src/dom/NodeImpl.cpp @@ -126,6 +126,10 @@ int NodeImpl::gTotalNodeImpls= 0; NodeImpl::~NodeImpl() { + if (getUserData()) + { + setUserData(null); + } NodeImpl::gLiveNodeImpls--; };