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>
* 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)
return;
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 {
channel(data, "%s", "out of memory error");
channel(data, "%s\n", "out of memory error");
}
if (code == XML_ERR_OK)
return;

2
tree.c
View File

@ -8346,7 +8346,7 @@ xmlDocFormatDump(FILE *f, xmlDocPtr cur, int format) {
*/
int
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.
*/
int
xmlOutputBufferClose(xmlOutputBufferPtr out) {
xmlOutputBufferClose(xmlOutputBufferPtr out)
{
int written;
int err_rc = 0;
if (out == NULL)
return(-1);
return (-1);
if (out->writecallback != NULL)
xmlOutputBufferFlush(out);
xmlOutputBufferFlush(out);
if (out->closecallback != NULL) {
err_rc = out->closecallback(out->context);
err_rc = out->closecallback(out->context);
}
written = out->written;
if (out->conv) {
xmlBufferFree(out->conv);
out->conv = NULL;
out->conv = NULL;
}
if (out->encoder != NULL) {
xmlCharEncCloseFunc(out->encoder);
}
if (out->buffer != NULL) {
xmlBufferFree(out->buffer);
out->buffer = NULL;
out->buffer = NULL;
}
if (out->error)
err_rc = -1;
xmlFree(out);
return( ( err_rc == 0 ) ? written : err_rc );
return ((err_rc == 0) ? written : err_rc);
}
#endif /* LIBXML_OUTPUT_ENABLED */

View File

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