Fix detection of missing close tags at the end of a document (STR #45)

This commit is contained in:
Michael R Sweet 2007-04-18 02:37:01 +00:00
parent 4636114c5b
commit 40a4dd5242
3 changed files with 19 additions and 1 deletions

View File

@ -5,6 +5,8 @@ CHANGES IN Mini-XML 2.3
- Added two exceptions to the LGPL to support static
linking of applications against Mini-XML.
- mxmlLoad*() did not detect missing close tags at the end
of an XML document.
- Added user_data and ref_count members to mxml_node_t
structure.
- Added mxmlReleaseNode() and mxmlRetainNode() APIs for

View File

@ -10,6 +10,9 @@
<li>Added two exceptions to the LGPL to support static
linking of applications against Mini-XML.</li>
<li>mxmlLoad*() did not detect missing close tags at the end
of an XML document.</li>
<li>Added user_data and ref_count members to mxml_node_t
structure.</li>

View File

@ -1748,7 +1748,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
*/
mxml_error("Mismatched close tag <%s> under parent <%s>!",
buffer, parent ? parent->value.element.name : "(nil)");
buffer, parent ? parent->value.element.name : "(null)");
goto error;
}
@ -1856,8 +1856,21 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
if (parent)
{
node = parent;
while (parent->parent != top && parent->parent)
parent = parent->parent;
if (node != parent)
{
mxml_error("Missing close tag </%s> under parent <%s>!",
node->value.element.name,
node->parent ? node->parent->value.element.name : "(null)");
mxmlDelete(first);
return (NULL);
}
}
return (parent);