1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-29 11:41:22 +03:00

more cleanup through the I/O error path Daniel

* error.c tree.c xmlIO.c xmllint.c: more cleanup through the
  I/O error path
Daniel
This commit is contained in:
Daniel Veillard
2003-10-08 19:19:10 +00:00
parent 97bf4d02e5
commit 828ce83d4c
5 changed files with 25 additions and 11 deletions

View File

@ -1,3 +1,8 @@
Wed Oct 8 21:18:12 CEST 2003 Daniel Veillard <daniel@veillard.com>
* error.c tree.c xmlIO.c xmllint.c: more cleanup through the
I/O error path
Wed Oct 8 20:57:27 CEST 2003 Daniel Veillard <daniel@veillard.com> Wed Oct 8 20:57:27 CEST 2003 Daniel Veillard <daniel@veillard.com>
* xmlIO.c: better handling of error cases * xmlIO.c: better handling of error cases

View File

@ -350,9 +350,14 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str,
if (code == XML_ERR_OK) if (code == XML_ERR_OK)
return; return;
if (str != NULL) { if (str != NULL) {
channel(data, "%s", str); int len;
len = xmlStrlen((const xmlChar *)str);
if ((len > 0) && (str[len - 1] != '\n'))
channel(data, "%s", str);
else
channel(data, "%s\n", str);
} else { } else {
channel(data, "%s", "out of memory error"); channel(data, "%s\n", "out of memory error");
} }
if (code == XML_ERR_OK) if (code == XML_ERR_OK)
return; return;

2
tree.c
View File

@ -8346,7 +8346,7 @@ xmlDocFormatDump(FILE *f, xmlDocPtr cur, int format) {
*/ */
int int
xmlDocDump(FILE *f, xmlDocPtr cur) { xmlDocDump(FILE *f, xmlDocPtr cur) {
return(xmlDocFormatDump (f, cur, 0)); return(xmlDocFormatDump (f, cur, 0));
} }
/** /**

17
xmlIO.c
View File

@ -1974,32 +1974,35 @@ xmlFreeParserInputBuffer(xmlParserInputBufferPtr in) {
* Returns the number of byte written or -1 in case of error. * Returns the number of byte written or -1 in case of error.
*/ */
int int
xmlOutputBufferClose(xmlOutputBufferPtr out) { xmlOutputBufferClose(xmlOutputBufferPtr out)
{
int written; int written;
int err_rc = 0; int err_rc = 0;
if (out == NULL) if (out == NULL)
return(-1); return (-1);
if (out->writecallback != NULL) if (out->writecallback != NULL)
xmlOutputBufferFlush(out); xmlOutputBufferFlush(out);
if (out->closecallback != NULL) { if (out->closecallback != NULL) {
err_rc = out->closecallback(out->context); err_rc = out->closecallback(out->context);
} }
written = out->written; written = out->written;
if (out->conv) { if (out->conv) {
xmlBufferFree(out->conv); xmlBufferFree(out->conv);
out->conv = NULL; out->conv = NULL;
} }
if (out->encoder != NULL) { if (out->encoder != NULL) {
xmlCharEncCloseFunc(out->encoder); xmlCharEncCloseFunc(out->encoder);
} }
if (out->buffer != NULL) { if (out->buffer != NULL) {
xmlBufferFree(out->buffer); xmlBufferFree(out->buffer);
out->buffer = NULL; out->buffer = NULL;
} }
if (out->error)
err_rc = -1;
xmlFree(out); xmlFree(out);
return( ( err_rc == 0 ) ? written : err_rc ); return ((err_rc == 0) ? written : err_rc);
} }
#endif /* LIBXML_OUTPUT_ENABLED */ #endif /* LIBXML_OUTPUT_ENABLED */

View File

@ -1066,7 +1066,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
out = fopen(output,"wb"); out = fopen(output,"wb");
} }
if (out != NULL) { if (out != NULL) {
xmlDocDump(out, doc); if (xmlDocDump(out, doc) < 0)
progresult = 6;
if (output != NULL) if (output != NULL)
fclose(out); fclose(out);