From 7774cdd96e01b2d89be16f7e240c1ffb2436b4c9 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Tue, 21 Oct 2014 03:33:37 +0000 Subject: XPath: Make sure step_push is called with valid nodes Some steps relied on step_push rejecting null inputs; this is no longer the case. Additionally stepping now more rigorously filters null inputs. git-svn-id: https://pugixml.googlecode.com/svn/trunk@1069 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/pugixml.cpp') diff --git a/src/pugixml.cpp b/src/pugixml.cpp index e9ab09d..5c7fb6d 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -8705,7 +8705,7 @@ PUGI__NS_BEGIN while (cur && !cur.next_sibling()) cur = cur.parent(); cur = cur.next_sibling(); - for (;;) + while (cur) { if (step_push(ns, cur, alloc) & once) return; @@ -8733,7 +8733,7 @@ PUGI__NS_BEGIN while (cur && !cur.previous_sibling()) cur = cur.parent(); cur = cur.previous_sibling(); - for (;;) + while (cur) { if (cur.last_child()) cur = cur.last_child(); @@ -8916,7 +8916,7 @@ PUGI__NS_BEGIN if (it->node()) step_fill(ns, it->node(), stack.result, once, v); - else if (axis_has_attributes) + else if (axis_has_attributes && it->attribute() && it->parent()) step_fill(ns, it->attribute(), it->parent(), stack.result, once, v); apply_predicates(ns, size, stack); @@ -8926,7 +8926,7 @@ PUGI__NS_BEGIN { if (c.n.node()) step_fill(ns, c.n.node(), stack.result, once, v); - else if (axis_has_attributes) + else if (axis_has_attributes && c.n.attribute() && c.n.parent()) step_fill(ns, c.n.attribute(), c.n.parent(), stack.result, once, v); apply_predicates(ns, 0, stack); -- cgit v1.2.3