Module: wine Branch: master Commit: 1140291adc537121422e5d4184a0502d6e368d2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=1140291adc537121422e5d4184...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Jun 1 14:33:20 2016 +0300
msxml3/schema: Support element nodes in add().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msxml3/schema.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c index f92130a..30272cb 100644 --- a/dlls/msxml3/schema.c +++ b/dlls/msxml3/schema.c @@ -1247,7 +1247,30 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri IUnknown_QueryInterface(V_UNKNOWN(&var), &IID_IXMLDOMNode, (void**)&domnode);
if (domnode) - doc = xmlNodePtr_from_domnode(domnode, XML_DOCUMENT_NODE)->doc; + { + DOMNodeType type; + + IXMLDOMNode_get_nodeType(domnode, &type); + switch (type) + { + case NODE_ELEMENT: + { + IXMLDOMDocument *domdoc; + VARIANT_BOOL b; + BSTR xml; + + IXMLDOMNode_get_xml(domnode, &xml); + DOMDocument_create(This->version, (void**)&domdoc); + IXMLDOMDocument_loadXML(domdoc, xml, &b); + SysFreeString(xml); + doc = xmlNodePtr_from_domnode((IXMLDOMNode*)domdoc, XML_DOCUMENT_NODE)->doc; + break; + } + default: + doc = xmlNodePtr_from_domnode(domnode, XML_DOCUMENT_NODE)->doc; + break; + } + }
if (!doc) {