diff --git a/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp b/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
index fc1c04d66e9eec59f4f7148564451bee385f5e5b..dd68e7a6393be27db35440a7124c24c7416124de 100644
--- a/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
+++ b/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
@@ -132,6 +132,9 @@ DOMNode* DOMTreeWalkerImpl::firstChild () {
 
     if (!fCurrentNode) return 0;
 
+    if(!fExpandEntityReferences && fCurrentNode->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+        return 0;
+
     DOMNode* node = getFirstChild(fCurrentNode);
 
     if (node != 0) {
@@ -149,6 +152,9 @@ DOMNode* DOMTreeWalkerImpl::lastChild () {
 
     if (!fCurrentNode) return 0;
 
+    if(!fExpandEntityReferences && fCurrentNode->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+        return 0;
+
     DOMNode* node = getLastChild(fCurrentNode);
     if (node != 0) {
         fCurrentNode = node;
@@ -386,6 +392,9 @@ DOMNode* DOMTreeWalkerImpl::getFirstChild (DOMNode* node) {
 		
     if (!node) return 0;
 
+    if(!fExpandEntityReferences && node->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+        return 0;
+
     DOMNode* newNode = node->getFirstChild();
     if (!newNode)  return 0;
 
@@ -414,6 +423,9 @@ DOMNode* DOMTreeWalkerImpl::getLastChild (DOMNode* node) {
 	
     if (!node) return 0;
 
+    if(!fExpandEntityReferences && node->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+        return 0;
+
     DOMNode* newNode = node->getLastChild();
     if (!newNode)  return 0;