Alistair Leslie-Hughes : msxml3: Corrected getAttribute to return current value and assign output var.

Alexandre Julliard julliard at winehq.org
Mon Jan 14 09:33:39 CST 2008


Module: wine
Branch: master
Commit: 83300893a2372b01c70b9034b28deda5f783602c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=83300893a2372b01c70b9034b28deda5f783602c

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Mon Jan 14 21:13:01 2008 +1100

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 e7f03d6..814a987 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 dcd2168..75adc64 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 );




More information about the wine-cvs mailing list