[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