diff options
| author | arseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> | 2010-09-20 19:06:45 +0000 | 
|---|---|---|
| committer | arseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> | 2010-09-20 19:06:45 +0000 | 
| commit | 612fa49d1d01c83e90f0b933c1b7aeee79161b68 (patch) | |
| tree | de3d7240e426ec997cc716ba3fd47750a9bf5a23 /src | |
| parent | d35f6751cf5165911b88a6f889262681506ad709 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/pugixml.cpp | 16 | ||||
| -rw-r--r-- | 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<xpath_allocator*>(alloc_holder.release()); +			if (_root) +			{ +				_alloc = static_cast<xpath_allocator*>(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  		{  | 
