Commit 561cf9f7 authored by Alistair Leslie-Hughes's avatar Alistair Leslie-Hughes Committed by Alexandre Julliard

msxml3: Corrected getAttributeNode to return correct values.

parent 177767c4
...@@ -587,23 +587,32 @@ static HRESULT WINAPI domelem_getAttributeNode( ...@@ -587,23 +587,32 @@ static HRESULT WINAPI domelem_getAttributeNode(
xmlNodePtr element; xmlNodePtr element;
xmlAttrPtr attr; xmlAttrPtr attr;
IUnknown *unk; IUnknown *unk;
HRESULT hr = E_FAIL; HRESULT hr = S_FALSE;
TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), attributeNode); TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), attributeNode);
if(!attributeNode)
return E_FAIL;
*attributeNode = NULL;
element = get_element( This ); element = get_element( This );
if ( !element ) if ( !element )
return E_FAIL; return E_FAIL;
xml_name = xmlChar_from_wchar(p); xml_name = xmlChar_from_wchar(p);
if(!xmlValidateNameValue(xml_name))
{
HeapFree(GetProcessHeap(), 0, xml_name);
return E_FAIL;
}
attr = xmlHasProp(element, xml_name); attr = xmlHasProp(element, xml_name);
if(attr) { if(attr) {
unk = create_attribute((xmlNodePtr)attr); unk = create_attribute((xmlNodePtr)attr);
hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMAttribute, (void**)attributeNode); hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMAttribute, (void**)attributeNode);
IUnknown_Release(unk); IUnknown_Release(unk);
}else {
*attributeNode = NULL;
} }
HeapFree(GetProcessHeap(), 0, xml_name); HeapFree(GetProcessHeap(), 0, xml_name);
......
...@@ -958,12 +958,22 @@ static void test_domnode( void ) ...@@ -958,12 +958,22 @@ static void test_domnode( void )
ok( V_VT(&var) == VT_NULL || V_VT(&var) == VT_EMPTY, "vt = %x\n", V_VT(&var)); ok( V_VT(&var) == VT_NULL || V_VT(&var) == VT_EMPTY, "vt = %x\n", V_VT(&var));
VariantClear(&var); VariantClear(&var);
r = IXMLDOMElement_getAttributeNode( element, str, NULL);
ok( r == E_FAIL, "getAttributeNode ret %08x\n", r );
attr = (IXMLDOMAttribute*)0xdeadbeef; attr = (IXMLDOMAttribute*)0xdeadbeef;
r = IXMLDOMElement_getAttributeNode( element, str, &attr); r = IXMLDOMElement_getAttributeNode( element, str, &attr);
ok( r == E_FAIL, "getAttributeNode ret %08x\n", r ); ok( r == E_FAIL, "getAttributeNode ret %08x\n", r );
ok( attr == NULL, "getAttributeNode ret %p, expected NULL\n", attr ); ok( attr == NULL, "getAttributeNode ret %p, expected NULL\n", attr );
SysFreeString( str ); SysFreeString( str );
attr = (IXMLDOMAttribute*)0xdeadbeef;
str = _bstr_("nonExisitingAttribute");
r = IXMLDOMElement_getAttributeNode( element, str, &attr);
ok( r == S_FALSE, "getAttributeNode ret %08x\n", r );
ok( attr == NULL, "getAttributeNode ret %p, expected NULL\n", attr );
SysFreeString( str );
str = SysAllocString( szdl ); str = SysAllocString( szdl );
V_VT(&var) = VT_I4; V_VT(&var) = VT_I4;
V_I4(&var) = 0x1234; V_I4(&var) = 0x1234;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment