diff --git a/src/xercesc/dom/impl/DOMParentNode.cpp b/src/xercesc/dom/impl/DOMParentNode.cpp
index 27ec16d0273763a02fa2421fe1f7e658b3b3dc7b..a89399976f3fe193c7bf29740b3bfd09e3933491 100644
--- a/src/xercesc/dom/impl/DOMParentNode.cpp
+++ b/src/xercesc/dom/impl/DOMParentNode.cpp
@@ -404,7 +404,7 @@ void DOMParentNode::normalize()
 
 bool DOMParentNode::isEqualNode(const DOMNode* arg)
 {
-    if (castToNodeImpl(this)->isEqualNode(arg))
+    if (arg && castToNodeImpl(this)->isEqualNode(arg))
     {
         DOMNode *kid, *argKid;
         for (kid = fFirstChild, argKid = arg->getFirstChild();
@@ -414,7 +414,7 @@ bool DOMParentNode::isEqualNode(const DOMNode* arg)
             if (!kid->isEqualNode(argKid))
                 return false;
         }
-        return true;
+        return (kid || argKid) ? false : true;
     }
     return false;
 }