Fix STR #21: load methods didn't return NULL on error.

Update docos for 2.2.1.
This commit is contained in:
Michael R Sweet 2005-05-18 01:45:20 +00:00
parent c075136310
commit ad02a0255f
10 changed files with 82 additions and 25 deletions

View File

@ -1,8 +1,10 @@
CHANGES - 05/14/2005
CHANGES - 05/17/2005
--------------------
CHANGES IN Mini-XML 2.2.1
- mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now
correctly return NULL on error (STR #21)
- mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(),
mxmlNewText(), and mxmlNewTextf() incorrectly required
a parent node (STR #22)

4
README
View File

@ -1,11 +1,11 @@
README - 02/25/2005
README - 05/17/2005
-------------------
INTRODUCTION
This README file describes the Mini-XML library version
2.2.
2.2.1.
Mini-XML is a small XML parsing library that you can use to
read XML and XML-like data files in your application without

View File

@ -1828,6 +1828,8 @@ Ty Coon, President of Vice
<H1 align="right"><A name="RELNOTES">B - Release Notes</A></H1>
<H2><A NAME="7_1">Changes in Mini-XML 2.2.1</A></H2>
<UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI>
<LI>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(), mxmlNewText(), and
mxmlNewTextf() incorrectly required a parent node (STR #22)</LI>
<LI>Fixed an XML output bug in mxmldoc.</LI>

View File

@ -7,6 +7,9 @@
<ul>
<li>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString()
now correctly return NULL on error (STR #21)</li>
<li>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(),
mxmlNewText(), and mxmlNewTextf() incorrectly required a
parent node (STR #22)</li>

View File

@ -1318,6 +1318,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
/* I - Read function */
{
mxml_node_t *node, /* Current node */
*first, /* First node added */
*parent; /* Current parent node */
int ch, /* Character from file */
whitespace; /* Non-zero if whitespace seen */
@ -1326,6 +1327,15 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
int bufsize; /* Size of buffer */
mxml_type_t type; /* Current node type */
int encoding; /* Character encoding */
static const char * const types[] = /* Type strings... */
{
"MXML_ELEMENT", /* XML element with attributes */
"MXML_INTEGER", /* Integer value */
"MXML_OPAQUE", /* Opaque string */
"MXML_REAL", /* Real value */
"MXML_TEXT", /* Text fragment */
"MXML_CUSTOM" /* Custom data */
};
/*
@ -1341,6 +1351,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
bufsize = 64;
bufptr = buffer;
parent = top;
first = NULL;
whitespace = 0;
encoding = ENCODE_UTF8;
@ -1395,7 +1406,6 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
mxmlDelete(node);
node = NULL;
}
break;
}
@ -1422,13 +1432,16 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
if (!node)
{
/*
* Just print error for now...
* Print error and return...
*/
mxml_error("Unable to add value node of type %d to parent <%s>!",
type, parent ? parent->value.element.name : "null");
break;
mxml_error("Unable to add value node of type %s to parent <%s>!",
types[type], parent ? parent->value.element.name : "null");
goto error;
}
if (!first)
first = node;
}
else if (isspace(ch) && type == MXML_TEXT)
whitespace = 1;
@ -1492,7 +1505,15 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
*/
if (ch != '>')
break;
{
/*
* Print error and return...
*/
mxml_error("Early EOF in comment node!");
goto error;
}
/*
* Otherwise add this as an element under the current parent...
@ -1530,7 +1551,15 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
*/
if (ch != '>')
break;
{
/*
* Print error and return...
*/
mxml_error("Early EOF in CDATA node!");
goto error;
}
/*
* Otherwise add this as an element under the current parent...
@ -1541,12 +1570,12 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
if (!mxmlNewElement(parent, buffer))
{
/*
* Just print error for now...
* Print error and return...
*/
mxml_error("Unable to add comment node to parent <%s>!",
mxml_error("Unable to add CDATA node to parent <%s>!",
parent ? parent->value.element.name : "null");
break;
goto error;
}
}
else if (buffer[0] == '?')
@ -1564,11 +1593,19 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
}
/*
* Error out if we didn't get the whole comment...
* Error out if we didn't get the whole processing instruction...
*/
if (ch != '>')
break;
{
/*
* Print error and return...
*/
mxml_error("Early EOF in processing instruction node!");
goto error;
}
/*
* Otherwise add this as an element under the current parent...
@ -1579,12 +1616,12 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
if (!(parent = mxmlNewElement(parent, buffer)))
{
/*
* Just print error for now...
* Print error and return...
*/
mxml_error("Unable to add comment node to parent <%s>!",
mxml_error("Unable to add processing instruction node to parent <%s>!",
parent ? parent->value.element.name : "null");
break;
goto error;
}
if (cb)
@ -1617,7 +1654,14 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
*/
if (ch != '>')
break;
{
/*
* Print error and return...
*/
mxml_error("Early EOF in declaration node!");
goto error;
}
/*
* Otherwise add this as an element under the current parent...
@ -1629,12 +1673,12 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
if (!node)
{
/*
* Just print error for now...
* Print error and return...
*/
mxml_error("Unable to add declaration node to parent <%s>!",
parent ? parent->value.element.name : "null");
break;
goto error;
}
/*
@ -1660,7 +1704,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
mxml_error("Mismatched close tag <%s> under parent <%s>!",
buffer, parent->value.element.name);
break;
goto error;
}
/*
@ -1695,7 +1739,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
mxml_error("Unable to add element node to parent <%s>!",
parent ? parent->value.element.name : "null");
break;
goto error;
}
if (isspace(ch))
@ -1706,7 +1750,7 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
{
mxml_error("Expected > but got '%c' instead for element <%s/>!",
ch, buffer);
break;
goto error;
}
ch = '/';
@ -1777,6 +1821,8 @@ mxml_load_data(mxml_node_t *top, /* I - Top node */
error:
mxmlDelete(first);
free(buffer);
return (NULL);

View File

@ -29,6 +29,8 @@ PRE { font-family: monospace }
<HR NOSHADE>
<H2><A NAME="7_1">Changes in Mini-XML 2.2.1</A></H2>
<UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI>
<LI>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(), mxmlNewText(), and
mxmlNewTextf() incorrectly required a parent node (STR #22)</LI>
<LI>Fixed an XML output bug in mxmldoc.</LI>

View File

@ -21,7 +21,7 @@ html_start_table(array("Quick Info"), "100%", "100%");
html_start_row();
print("<td>"
."<p align='center'>"
."Stable Release: <a href='software.php?2.2.1'>v2.2.1</a><br />"
."Stable Release: <a href='software.php?2.2.1'>v2.2.1</a></p>"
."<small><p>Mini-XML is a small XML parsing library that you can use to "
."read XML and XML-like data files in your application without "
."requiring large non-standard libraries. Mini-XML only requires "

View File

@ -1828,6 +1828,8 @@ Ty Coon, President of Vice
<H1 align="right"><A name="RELNOTES">B - Release Notes</A></H1>
<H2><A NAME="7_1">Changes in Mini-XML 2.2.1</A></H2>
<UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI>
<LI>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(), mxmlNewText(), and
mxmlNewTextf() incorrectly required a parent node (STR #22)</LI>
<LI>Fixed an XML output bug in mxmldoc.</LI>

Binary file not shown.

Binary file not shown.