Alistair Leslie-Hughes : msxml3: Cannot add an attribute with appendChild.

Alexandre Julliard julliard at winehq.org
Fri Jan 4 07:12:42 CST 2008


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

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Fri Jan  4 09:15:00 2008 +1100

msxml3: Cannot add an attribute with appendChild.

---

 dlls/msxml3/node.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 019f1d3..c0fd27c 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -482,9 +482,29 @@ static HRESULT WINAPI xmlnode_appendChild(
     IXMLDOMNode** outNewChild)
 {
     xmlnode *This = impl_from_IXMLDOMNode( iface );
+    IXMLDOMNode *pAttr = NULL;
     VARIANT var;
 
     TRACE("(%p)->(%p,%p)\n", This, newChild, outNewChild);
+
+    /* Cannot Append an Attribute node. */
+    IUnknown_QueryInterface(newChild, &IID_IXMLDOMNode, (LPVOID*)&pAttr);
+    if(pAttr)
+    {
+        xmlnode *ThisNew = impl_from_IXMLDOMNode( pAttr );
+
+        if(ThisNew->node->type == XML_ATTRIBUTE_NODE)
+        {
+            if(outNewChild) *outNewChild = NULL;
+
+            IUnknown_Release(pAttr);
+
+            return E_FAIL;
+        }
+
+        IUnknown_Release(pAttr);
+    }
+
     VariantInit(&var);
     return IXMLDOMNode_insertBefore(iface, newChild, var, outNewChild);
 }




More information about the wine-cvs mailing list