[libxml2] Fix HTML serialization with UTF-8 encoding



commit d459831c1b308c2095a1b73800e0238269d4106a
Author: Nick Wellnhofer <wellnhofer aevum de>
Date:   Sat Oct 13 16:12:14 2018 +0200

    Fix HTML serialization with UTF-8 encoding
    
    If the encoding is specified as UTF-8, make sure to use a NULL encoding
    handler.

 HTMLtree.c | 84 ++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 40 insertions(+), 44 deletions(-)
---
diff --git a/HTMLtree.c b/HTMLtree.c
index 6a2f43d8..21cfcfe5 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -502,16 +502,16 @@ htmlNodeDumpFileFormat(FILE *out, xmlDocPtr doc,
            if (handler == NULL)
                htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding);
        }
+    } else {
+        /*
+         * Fallback to HTML or ASCII when the encoding is unspecified
+         */
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
     }
 
-    /*
-     * Fallback to HTML or ASCII when the encoding is unspecified
-     */
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("HTML");
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("ascii");
-
     /*
      * save the content to a temp buffer.
      */
@@ -575,19 +575,17 @@ htmlDocDumpMemoryFormat(xmlDocPtr cur, xmlChar**mem, int *size, int format) {
            if (handler == NULL)
                 htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding);
 
-       } else {
-           handler = xmlFindCharEncodingHandler(encoding);
        }
+    } else {
+        /*
+         * Fallback to HTML or ASCII when the encoding is unspecified
+         */
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
     }
 
-    /*
-     * Fallback to HTML or ASCII when the encoding is unspecified
-     */
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("HTML");
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("ascii");
-
     buf = xmlAllocOutputBufferInternal(handler);
     if (buf == NULL) {
        *mem = NULL;
@@ -1096,19 +1094,17 @@ htmlDocDump(FILE *f, xmlDocPtr cur) {
            handler = xmlFindCharEncodingHandler(encoding);
            if (handler == NULL)
                htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding);
-       } else {
-           handler = xmlFindCharEncodingHandler(encoding);
        }
+    } else {
+        /*
+         * Fallback to HTML or ASCII when the encoding is unspecified
+         */
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
     }
 
-    /*
-     * Fallback to HTML or ASCII when the encoding is unspecified
-     */
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("HTML");
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("ascii");
-
     buf = xmlOutputBufferCreateFile(f, handler);
     if (buf == NULL) return(-1);
     htmlDocContentDumpOutput(buf, cur, NULL);
@@ -1149,16 +1145,16 @@ htmlSaveFile(const char *filename, xmlDocPtr cur) {
            if (handler == NULL)
                htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding);
        }
+    } else {
+        /*
+         * Fallback to HTML or ASCII when the encoding is unspecified
+         */
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
     }
 
-    /*
-     * Fallback to HTML or ASCII when the encoding is unspecified
-     */
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("HTML");
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("ascii");
-
     /*
      * save the content to a temp buffer.
      */
@@ -1206,15 +1202,15 @@ htmlSaveFileFormat(const char *filename, xmlDocPtr cur,
         htmlSetMetaEncoding(cur, (const xmlChar *) encoding);
     } else {
        htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8");
-    }
 
-    /*
-     * Fallback to HTML or ASCII when the encoding is unspecified
-     */
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("HTML");
-    if (handler == NULL)
-       handler = xmlFindCharEncodingHandler("ascii");
+        /*
+         * Fallback to HTML or ASCII when the encoding is unspecified
+         */
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
+    }
 
     /*
      * save the content to a temp buffer.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]