Module: wine Branch: master Commit: 11df66af0b77d70bebd50fa05203356440c1a9f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=11df66af0b77d70bebd50fa052...
Author: Adam Martinson amartinson@codeweavers.com Date: Wed May 4 15:38:03 2011 -0500
msxml3: Don't add a <?xml...?> decl in domdoc_get_xml().
---
dlls/msxml3/domdoc.c | 10 ++-------- dlls/msxml3/tests/domdoc.c | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index 1aa6394..84b7283 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -2,7 +2,7 @@ * DOM Document implementation * * Copyright 2005 Mike McCormack - * Copyright 2010 Adam Martinson for CodeWeavers + * Copyright 2010-2011 Adam Martinson for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -370,11 +370,6 @@ static void free_properties(domdoc_properties* properties) } }
-static BOOL xmldoc_has_decl(xmlDocPtr doc) -{ - return doc->children && (xmlStrEqual(doc->children->name, (xmlChar*)"xml") == 1); -} - /* links a "<?xml" node as a first child */ void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node) { @@ -1394,8 +1389,7 @@ static HRESULT WINAPI domdoc_get_xml( if(!buf) return E_OUTOFMEMORY;
- options = xmldoc_has_decl(get_doc(This)) ? XML_SAVE_NO_DECL : 0; - options |= XML_SAVE_FORMAT; + options = XML_SAVE_FORMAT | XML_SAVE_NO_DECL; ctxt = xmlSaveToIO(domdoc_get_xml_writecallback, NULL, buf, "UTF-8", options);
if(!ctxt) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 46a4188..c9bfa49 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -3,7 +3,7 @@ * * Copyright 2005 Mike McCormack for CodeWeavers * Copyright 2007-2008 Alistair Leslie-Hughes - * Copyright 2010 Adam Martinson for CodeWeavers + * Copyright 2010-2011 Adam Martinson for CodeWeavers * Copyright 2010-2011 Nikolay Sivov for CodeWeavers * * This library is free software; you can redistribute it and/or @@ -8972,8 +8972,10 @@ static void test_put_nodeTypedValue(void) static void test_get_xml(void) { static const char xmlA[] = "<?xml version=\"1.0\" encoding=\"UTF-16\"?>\r\n<a>test</a>\r\n"; + static const char fooA[] = "<foo/>"; IXMLDOMProcessingInstruction *pi; IXMLDOMNode *first; + IXMLDOMElement *elem = NULL; IXMLDOMDocument *doc; VARIANT_BOOL b; VARIANT v; @@ -9012,6 +9014,25 @@ static void test_get_xml(void) SysFreeString(xml);
IXMLDOMDocument_Release(doc); + + doc = create_document(&IID_IXMLDOMDocument); + + hr = IXMLDOMDocument_createElement(doc, _bstr_("foo"), &elem); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXMLDOMDocument_putref_documentElement(doc, elem); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXMLDOMDocument_get_xml(doc, &xml); + ok(hr == S_OK, "got 0x%08x\n", hr); + + ok(memcmp(xml, _bstr_(fooA), (sizeof(fooA)-1)*sizeof(WCHAR)) == 0, + "got %s, expected %s\n", wine_dbgstr_w(xml), fooA); + SysFreeString(xml); + + IXMLDOMElement_Release(elem); + IXMLDOMDocument_Release(doc); + free_bstrs(); }