From 42bf19d6fe00cb29824b5bc86759183e5a832db6 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Thu, 1 Sep 2016 10:36:23 +0100 Subject: DOM Document: Fix find by ID, when called with global tree root. Fixes: NetSurf bug #2466. --- src/core/document.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/core') diff --git a/src/core/document.c b/src/core/document.c index 14fd1b9..7c0bcdc 100644 --- a/src/core/document.c +++ b/src/core/document.c @@ -1393,23 +1393,23 @@ dom_exception _dom_find_element_by_id(dom_node_internal *root, } if (node->first_child != NULL) { - /* Has children */ + /* Move to child */ node = node->first_child; - } else if (node->next != NULL) { - /* No children, but has siblings */ - node = node->next; } else { - /* No children or siblings. - * Find first unvisited relation. */ - dom_node_internal *parent = node->parent; - - while (parent != root && - node == parent->last_child) { - node = parent; - parent = parent->parent; + while (node != NULL) { + if (node->next != NULL) { + /* Move to next sibling */ + node = node->next; + break; + } else if (node->parent != root) { + /* Move back up to ancestors to + * get to next siblings */ + node = node->parent; + } else { + /* No more nodes below root. */ + node = NULL; + } } - - node = node->next; } } -- cgit v1.2.3