Module: wine Branch: master Commit: 52f6a33a85df3fbc1796de208f1cf24feff91ad8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=52f6a33a85df3fbc1796de208f...
Author: Alistair Leslie-Hughes leslie_alistair@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");