From 612fa49d1d01c83e90f0b933c1b7aeee79161b68 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Mon, 20 Sep 2010 19:06:45 +0000 Subject: XPath: xpath_parse_result is now default-initialized to object with failed status git-svn-id: http://pugixml.googlecode.com/svn/trunk@738 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 16 ++++++++-------- src/pugixml.hpp | 4 ++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 7063fc3..0b76d1f 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -9016,9 +9016,6 @@ namespace pugi xpath_query::xpath_query(const char_t* query, xpath_variable_set* variables): _alloc(0), _root(0) { - _result.error = 0; - _result.offset = 0; - xpath_allocator* alloc = xpath_allocator::create(); if (!alloc) @@ -9035,10 +9032,11 @@ namespace pugi _root = xpath_parser::parse(query, variables, alloc, &_result); - #ifdef PUGIXML_NO_EXCEPTIONS - if (_root) // only store allocator if parsing was a success - #endif - _alloc = static_cast(alloc_holder.release()); + if (_root) + { + _alloc = static_cast(alloc_holder.release()); + _result.error = 0; + } } } @@ -9127,7 +9125,9 @@ namespace pugi #ifdef PUGIXML_NO_EXCEPTIONS return xpath_node_set(); #else - xpath_parse_result result = {"Expression does not evaluate to node set", 0}; + xpath_parse_result result; + result.error = "Expression does not evaluate to node set"; + throw xpath_exception(result); #endif } diff --git a/src/pugixml.hpp b/src/pugixml.hpp index 89494bf..b6f1710 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -1775,6 +1775,10 @@ namespace pugi /// Last parsed offset (in characters from string start) ptrdiff_t offset; + xpath_parse_result(): error("Internal error"), offset(0) + { + } + /// Cast to bool operator operator bool() const { -- cgit v1.2.3