Module: wine Branch: master Commit: 9f1fb46543fccc9075a2dd6fea9f16423ba60728 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9f1fb46543fccc9075a2dd6fea...
Author: Andrew Nguyen anguyen@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 );