From 83300893a2372b01c70b9034b28deda5f783602c Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Mon, 14 Jan 2008 21:13:01 +1100 Subject: [PATCH] msxml3: Corrected getAttribute to return current value and assign output var. --- dlls/msxml3/element.c | 9 +++++++-- dlls/msxml3/tests/domdoc.c | 11 +++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c index e7f03d676e8..814a9875eb1 100644 --- a/dlls/msxml3/element.c +++ b/dlls/msxml3/element.c @@ -459,15 +459,20 @@ static HRESULT WINAPI domelem_getAttribute( domelem *This = impl_from_IXMLDOMElement( iface ); xmlNodePtr element; xmlChar *xml_name, *xml_value; - HRESULT hr = E_FAIL; + HRESULT hr = S_FALSE; TRACE("(%p)->(%s,%p)\n", This, debugstr_w(name), value); + if(!value || !name) + return E_INVALIDARG; + element = get_element( This ); if ( !element ) return E_FAIL; - VariantInit(value); + V_BSTR(value) = NULL; + V_VT(value) = VT_NULL; + xml_name = xmlChar_from_wchar( name ); xml_value = xmlGetNsProp(element, xml_name, NULL); HeapFree(GetProcessHeap(), 0, xml_name); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index dcd2168957a..75adc641f12 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -697,8 +697,8 @@ static void test_domnode( void ) V_VT(&var) = VT_I4; V_I4(&var) = 0x1234; r = IXMLDOMElement_getAttribute( element, str, &var ); - ok( r == E_FAIL, "getAttribute ret %08x\n", r ); - ok( V_VT(&var) == VT_EMPTY, "vt = %x\n", V_VT(&var)); + ok( r == S_FALSE, "getAttribute ret %08x\n", r ); + ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var)); VariantClear(&var); SysFreeString( str ); @@ -710,6 +710,13 @@ static void test_domnode( void ) ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var)); ok( !lstrcmpW(V_BSTR(&var), szstr1), "wrong attr value\n"); VariantClear( &var ); + + r = IXMLDOMElement_getAttribute( element, NULL, &var ); + ok( r == E_INVALIDARG, "getAttribute ret %08x\n", r ); + + r = IXMLDOMElement_getAttribute( element, str, NULL ); + ok( r == E_INVALIDARG, "getAttribute ret %08x\n", r ); + SysFreeString( str ); r = IXMLDOMElement_get_attributes( element, &map );