Reviewed by Chris.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Nov 2004 00:49:09 +0000 (00:49 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Nov 2004 00:49:09 +0000 (00:49 +0000)
- fix recursive item traversal, use traverseNextNode() instead of
the buggy hand-rolled traversal.

        * khtml/xml/dom_nodeimpl.cpp:
        (NodeListImpl::recursiveItem):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8042 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/xml/dom_nodeimpl.cpp

index 99e54b9..2652719 100644 (file)
@@ -1,3 +1,13 @@
+2004-11-18  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Chris.
+
+       - fix recursive item traversal, use traverseNextNode() instead of
+       the buggy hand-rolled traversal.
+
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeListImpl::recursiveItem):
+
 2004-11-17  Darin Adler  <darin@apple.com>
 
         Reviewed by Ken.
index 17416bb..0d59763 100644 (file)
@@ -2331,10 +2331,9 @@ NodeImpl *NodeListImpl::recursiveItem ( unsigned long offset, NodeImpl *start) c
         }
     }
 
-    NodeImpl *end = rootNode->nextSibling();
     NodeImpl *n = start;
 
-    while (n != 0 && n != end) {
+    while (n) {
         if ( n->nodeType() == Node::ELEMENT_NODE ) {
             if (nodeMatches(n)) {
                 if (!remainingOffset) {
@@ -2347,15 +2346,7 @@ NodeImpl *NodeListImpl::recursiveItem ( unsigned long offset, NodeImpl *start) c
             }
         }
 
-        if (n->firstChild()) {
-            n = n->firstChild();
-        } else if (n->nextSibling()) {
-            n = n->nextSibling();
-        } else if (n->parentNode()) {
-            n = n->parentNode()->nextSibling();
-        } else {
-            n = 0;
-        }
+        n = n->traverseNextNode(rootNode);
     }
 
     return 0; // no matching node in this subtree