Andrew Nguyen : msxml3: Ignore the encoding attribute when loading a new XML document in IXMLDOMDocument ::loadXML.

Alexandre Julliard julliard at winehq.org
Mon Jun 14 13:01:18 CDT 2010


Module: wine
Branch: master
Commit: 9f1fb46543fccc9075a2dd6fea9f16423ba60728
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9f1fb46543fccc9075a2dd6fea9f16423ba60728

Author: Andrew Nguyen <anguyen at codeweavers.com>
Date:   Mon Jun 14 07:54:40 2010 -0500

msxml3: Ignore the encoding attribute when loading a new XML document in IXMLDOMDocument::loadXML.

---

 dlls/msxml3/domdoc.c       |    2 +-
 dlls/msxml3/tests/domdoc.c |   26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index e24077e..34be70c 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -148,7 +148,7 @@ static xmlDocPtr doparse( char *ptr, int len )
      * use xmlReadMemory if possible so we can suppress
      * writing errors to stderr
      */
-    return xmlReadMemory( ptr, len, NULL, NULL,
+    return xmlReadMemory( ptr, len, NULL, "UTF-8",
                           XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NOBLANKS );
 #else
     return xmlParseMemory( ptr, len );
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index c04078c..818f628 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -90,6 +90,16 @@ static const WCHAR szComplete5[] = {
     '<','/','S',':','s','e','a','r','c','h','>',0
 };
 
+static const WCHAR szComplete6[] = {
+    '<','?','x','m','l',' ','v','e','r','s','i','o','n','=','\'','1','.','0','\'',' ',
+    'e','n','c','o','d','i','n','g','=','\'','W','i','n','d','o','w','s','-','1','2','5','2','\'','?','>','\n',
+    '<','o','p','e','n','>','<','/','o','p','e','n','>','\n',0
+};
+
+static const CHAR szNonUnicodeXML[] =
+"<?xml version='1.0' encoding='Windows-1252'?>\n"
+"<open></open>\n";
+
 static const CHAR szExampleXML[] =
 "<?xml version='1.0' encoding='utf-8'?>\n"
 "<root xmlns:foo='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29'>\n"
@@ -618,6 +628,22 @@ if (0)
     ok( r == S_OK, "loadXML failed\n");
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
 
+    /* loadXML ignores the encoding attribute and always expects Unicode */
+    b = VARIANT_FALSE;
+    str = SysAllocString( szComplete6 );
+    r = IXMLDOMDocument_loadXML( doc, str, &b );
+    ok( r == S_OK, "loadXML failed\n");
+    ok( b == VARIANT_TRUE, "failed to load XML string\n");
+    SysFreeString( str );
+
+    /* try a BSTR containing a Windows-1252 document */
+    b = VARIANT_TRUE;
+    str = SysAllocStringByteLen( szNonUnicodeXML, sizeof(szNonUnicodeXML) - 1 );
+    r = IXMLDOMDocument_loadXML( doc, str, &b );
+    ok( r == S_FALSE, "loadXML succeeded\n");
+    ok( b == VARIANT_FALSE, "succeeded in loading XML string\n");
+    SysFreeString( str );
+
     /* try to load something valid */
     b = VARIANT_FALSE;
     str = SysAllocString( szComplete1 );




More information about the wine-cvs mailing list