From e22d38a150ab9ca449bf2434676e0be7561308bd Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Wed, 7 Jul 2010 14:48:46 +0000 Subject: traverse() function is now foolproof against walkers that modify node handles git-svn-id: http://pugixml.googlecode.com/svn/trunk@568 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 3362e05..c84ad2a 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -3945,7 +3945,8 @@ namespace pugi { walker._depth = -1; - if (!walker.begin(*this)) return false; + xml_node arg_begin = *this; + if (!walker.begin(arg_begin)) return false; xml_node cur = first_child(); @@ -3955,7 +3956,8 @@ namespace pugi do { - if (!walker.for_each(cur)) + xml_node arg_for_each = cur; + if (!walker.for_each(arg_for_each)) return false; if (cur.first_child()) @@ -3983,7 +3985,8 @@ namespace pugi assert(walker._depth == -1); - return walker.end(*this); + xml_node arg_end = *this; + return walker.end(arg_end); } unsigned int xml_node::document_order() const -- cgit v1.2.3