html: Fix memory leak after malloc failure
diff --git a/HTMLtree.c b/HTMLtree.c
index acdde75..6e8baf4 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -513,7 +513,10 @@
*/
handler = htmlFindOutputEncoder(encoding);
buf = xmlOutputBufferCreateFile(out, handler);
- if (buf == NULL) return(0);
+ if (buf == NULL) {
+ xmlCharEncCloseFunc(handler);
+ return(0);
+ }
htmlNodeDumpFormatOutput(buf, doc, cur, NULL, format);
@@ -563,8 +566,10 @@
encoding = (const char *) htmlGetMetaEncoding(cur);
handler = htmlFindOutputEncoder(encoding);
buf = xmlAllocOutputBufferInternal(handler);
- if (buf == NULL)
+ if (buf == NULL) {
+ xmlCharEncCloseFunc(handler);
return;
+ }
htmlDocContentDumpFormatOutput(buf, cur, NULL, format);
@@ -1029,7 +1034,10 @@
encoding = (const char *) htmlGetMetaEncoding(cur);
handler = htmlFindOutputEncoder(encoding);
buf = xmlOutputBufferCreateFile(f, handler);
- if (buf == NULL) return(-1);
+ if (buf == NULL) {
+ xmlCharEncCloseFunc(handler);
+ return(-1);
+ }
htmlDocContentDumpOutput(buf, cur, NULL);
ret = xmlOutputBufferClose(buf);
@@ -1060,7 +1068,10 @@
encoding = (const char *) htmlGetMetaEncoding(cur);
handler = htmlFindOutputEncoder(encoding);
buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
- if (buf == NULL) return(0);
+ if (buf == NULL) {
+ xmlCharEncCloseFunc(handler);
+ return(0);
+ }
htmlDocContentDumpOutput(buf, cur, NULL);
@@ -1101,7 +1112,10 @@
* save the content to a temp buffer.
*/
buf = xmlOutputBufferCreateFilename(filename, handler, 0);
- if (buf == NULL) return(0);
+ if (buf == NULL) {
+ xmlCharEncCloseFunc(handler);
+ return(0);
+ }
htmlDocContentDumpFormatOutput(buf, cur, encoding, format);