components/libxml2/patches/22.htmlSetMetaEncoding.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Mon, 16 Jul 2012 14:07:33 -0700
changeset 918 35e4a56e4a26
permissions -rw-r--r--
7184322 libxml2 should pass its internal test suite
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
918
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
Last file (tree.c) of original commit was left out since it modifies
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
just comment where it wouldn't apply because of change in context.
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
From 39d027cdb74371d64f68dc488556be41e1d14546 Mon Sep 17 00:00:00 2001
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
From: Daniel Veillard <[email protected]>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
Date: Fri, 11 May 2012 04:38:23 +0000
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
Subject: Fix html serialization error and htmlSetMetaEncoding()
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
For https://bugzilla.gnome.org/show_bug.cgi?id=630682
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
The python tests were reporting errors, some of it was due to
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
a small change in case encoding, but the main one was about
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
htmlSetMetaEncoding(doc, NULL) being broken by not removing
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
the associated meta tag anymore
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
---
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
diff --git a/HTMLtree.c b/HTMLtree.c
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
index f23ae02..5d0893b 100644
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
--- a/HTMLtree.c
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
+++ b/HTMLtree.c
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
@@ -151,7 +151,7 @@ found_content:
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
  * htmlSetMetaEncoding:
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
  * @doc:  the document
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
  * @encoding:  the encoding string
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
- * 
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
+ *
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
  * Sets the current encoding in the Meta tags
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
  * NOTE: this will not change the document content encoding, just
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
  * the META flag associated.
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
@@ -164,6 +164,7 @@ htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
     const xmlChar *content = NULL;
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
     char newcontent[100];
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
 
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
+    newcontent[0] = 0;
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
 
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
     if (doc == NULL)
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
 	return(-1);
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
@@ -244,7 +245,7 @@ found_meta:
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
 			    http = 1;
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
 			else
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
                         {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
-                           if ((value != NULL) && 
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
+                           if ((value != NULL) &&
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
                                (!xmlStrcasecmp(attr->name, BAD_CAST"content")))
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
 			       content = value;
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
                         }
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
@@ -278,8 +279,13 @@ create:
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
             xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent);
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
         }
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
     } else {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
+        /* remove the meta tag if NULL is passed */
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
+        if (encoding == NULL) {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
+            xmlUnlinkNode(meta);
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
+            xmlFreeNode(meta);
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
+        }
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
         /* change the document only if there is a real encoding change */
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
-        if (xmlStrcasestr(content, encoding) == NULL) {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
+        else if (xmlStrcasestr(content, encoding) == NULL) {
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
             xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent);
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
         }
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
     }
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
diff --git a/python/tests/serialize.py b/python/tests/serialize.py
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
index 5b969a9..91753e7 100755
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
--- a/python/tests/serialize.py
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
+++ b/python/tests/serialize.py
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
@@ -96,7 +96,7 @@ str = doc.serialize("iso-8859-1", 1)
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
 <html>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
 <head>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
 <title>Hello</title>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
 </head>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
 <body><p>hello</p></body>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
@@ -131,7 +131,7 @@ if str != """<html>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
 str = root.serialize("iso-8859-1", 1)
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
 if str != """<html>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
 <head>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
 <title>Hello</title>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
 </head>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
 <body><p>hello</p></body>
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
--
35e4a56e4a26 7184322 libxml2 should pass its internal test suite
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
cgit v0.9.0.2