diff options
| author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2016-11-13 16:59:14 -0800 | 
|---|---|---|
| committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2016-11-13 16:59:14 -0800 | 
| commit | 1e23402eb23adf4ecd6c1c6bc83ecf21c8e0a6cd (patch) | |
| tree | 847f7cb9ad1db1e5ce21b344e05d0abc10d64f29 /src | |
| parent | 5ca7e7cffc53b2378d3d9eb5168458935ca21627 (diff) | |
Change status_end_element_mismatch to point to closing tag name
Previously the error offset pointed to the first mismatching character, which
can be confusing especially if the start tag name is a prefix of the end tag
name. Instead, move the offset to the first character of the name - that way
it should be more obvious that the problem is that the entire name mismatches.
Fixes #112.
Diffstat (limited to 'src')
| -rw-r--r-- | src/pugixml.cpp | 8 | 
1 files changed, 5 insertions, 3 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. | 
