[PATCH] Cannot use put_nodeValue on a IXMLDOMProcessingInstruction node whos target is xml

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Thu Mar 13 04:30:12 CDT 2008


---
 dlls/msxml3/pi.c           |   19 +++++++++++++++++++
 dlls/msxml3/tests/domdoc.c |    7 +++++++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 44e8a8b..0117569 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -200,6 +200,25 @@ static HRESULT WINAPI dom_pi_put_nodeValue(
     VARIANT var1 )
 {
     dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    BSTR sTarget;
+    static WCHAR szXML[] = {'x','m','l',0};
+    HRESULT hr;
+
+    TRACE("%p\n", This );
+
+    /* Cannot set data to a PI node whos target is 'xml' */
+    hr = dom_pi_get_nodeName(iface, &sTarget);
+    if(hr == S_OK)
+    {
+        if(lstrcmpW( sTarget, szXML) == 0)
+        {
+            SysFreeString(sTarget);
+            return E_FAIL;
+        }
+
+        SysFreeString(sTarget);
+    }
+    
     return IXMLDOMNode_put_nodeValue( This->node, var1 );
 }
 
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index b597670..b675aa7 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -785,6 +785,13 @@ static void test_domdoc( void )
         /* test put_data */
         r = IXMLDOMProcessingInstruction_put_data(nodePI, _bstr_("version=\"1.0\" encoding=\"UTF-8\""));
         ok(r == E_FAIL, "ret %08x\n", r );
+        
+        /* test put_data */
+        V_VT(&var) = VT_BSTR;
+        V_BSTR(&var) = SysAllocString(szOpen);  /* Doesnt matter what the string is, cannot set an xml node. */
+        r = IXMLDOMProcessingInstruction_put_nodeValue(nodePI, var);
+        ok(r == E_FAIL, "ret %08x\n", r );
+        VariantClear(&var);
 
         /* test get nodeName */
         r = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str);
-- 
1.5.4.1


--------------010203030400010300040703--




More information about the wine-patches mailing list