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

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 */