diff options
| -rw-r--r-- | src/pugixml.cpp | 8 | ||||
| -rw-r--r-- | tests/test_parse.cpp | 4 | 
2 files changed, 7 insertions, 5 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp index dc3e7be..f4fa792 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -3346,18 +3346,20 @@ PUGI__NS_BEGIN  					{  						++s; +						mark = s; +  						char_t* name = cursor->name; -						if (!name) PUGI__THROW_ERROR(status_end_element_mismatch, s); +						if (!name) PUGI__THROW_ERROR(status_end_element_mismatch, mark);  						while (PUGI__IS_CHARTYPE(*s, ct_symbol))  						{ -							if (*s++ != *name++) PUGI__THROW_ERROR(status_end_element_mismatch, s); +							if (*s++ != *name++) PUGI__THROW_ERROR(status_end_element_mismatch, mark);  						}  						if (*name)  						{  							if (*s == 0 && name[0] == endch && name[1] == 0) PUGI__THROW_ERROR(status_bad_end_element, s); -							else PUGI__THROW_ERROR(status_end_element_mismatch, s); +							else PUGI__THROW_ERROR(status_end_element_mismatch, mark);  						}  						PUGI__POPNODE(); // Pop. diff --git a/tests/test_parse.cpp b/tests/test_parse.cpp index f199eb9..ba45a45 100644 --- a/tests/test_parse.cpp +++ b/tests/test_parse.cpp @@ -1005,8 +1005,8 @@ TEST(parse_error_offset)  	CHECK_OFFSET("<n></n $>", parse_default, status_bad_end_element, 7);  	CHECK_OFFSET("<n></n", parse_default, status_bad_end_element, 5); -	CHECK_OFFSET("<no></na>", parse_default, status_end_element_mismatch, 8); -	CHECK_OFFSET("<no></nod>", parse_default, status_end_element_mismatch, 9); +	CHECK_OFFSET("<no></na>", parse_default, status_end_element_mismatch, 6); +	CHECK_OFFSET("<no></nod>", parse_default, status_end_element_mismatch, 6);  }  TEST(parse_result_default)  | 
