Alistair Leslie-Hughes : msxml3: Cannot use put_nodeValue on a IXMLDOMProcessingInstruction node whose target is xml .
Alexandre Julliard
julliard at winehq.org
Thu Mar 13 14:55:24 CDT 2008
Module: wine
Branch: master
Commit: 52f6a33a85df3fbc1796de208f1cf24feff91ad8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=52f6a33a85df3fbc1796de208f1cf24feff91ad8
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Thu Mar 13 20:30:12 2008 +1100
msxml3: Cannot use put_nodeValue on a IXMLDOMProcessingInstruction node whose target is xml.
---
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..5fad22c 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..884c133 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -786,6 +786,13 @@ static void test_domdoc( void )
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);
ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n");
More information about the wine-cvs
mailing list