Module: wine Branch: master Commit: 47b6d3a1e3a19796eb8b5a4578eba48a7fb23401 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=47b6d3a1e3a19796eb8b5a45...
Author: Dan Hipschman dsh@linux.ucla.edu Date: Wed Sep 20 16:41:30 2006 -0700
msxml3: Fix IXMLDOMNamedNodeMap_getNamedItem() conformance on error.
---
dlls/msxml3/nodemap.c | 10 ++++++++-- dlls/msxml3/tests/domdoc.c | 13 +++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c index 32fd32c..0797436 100644 --- a/dlls/msxml3/nodemap.c +++ b/dlls/msxml3/nodemap.c @@ -165,7 +165,10 @@ static HRESULT WINAPI xmlnodemap_getName xmlAttrPtr attr; xmlNodePtr node;
- TRACE("%p %s\n", This, debugstr_w(name) ); + TRACE("%p %s %p\n", This, debugstr_w(name), namedItem ); + + if ( !namedItem ) + return E_INVALIDARG;
node = xmlNodePtr_from_domnode( This->node, 0 ); if ( !node ) @@ -176,7 +179,10 @@ static HRESULT WINAPI xmlnodemap_getName HeapFree( GetProcessHeap(), 0, element_name );
if ( !attr ) - return E_FAIL; + { + *namedItem = NULL; + return S_FALSE; + }
*namedItem = create_node( (xmlNodePtr) attr );
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index aaad036..4a3fdc1 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -396,6 +396,19 @@ todo_wine IXMLDOMNode_Release(node); SysFreeString( str );
+ str = SysAllocString( szdl ); + r = IXMLDOMNamedNodeMap_getNamedItem( map, str, NULL ); + ok( r == E_INVALIDARG, "getNamedItem should return E_INVALIDARG\n"); + SysFreeString( str ); + + /* something that isn't in szComplete4 */ + str = SysAllocString( szOpen ); + node = (IXMLDOMNode *) 1; + r = IXMLDOMNamedNodeMap_getNamedItem( map, str, &node ); + ok( r = S_FALSE, "getNamedItem found a node that wasn't there\n"); + ok( node == NULL, "getNamedItem should have returned NULL\n"); + SysFreeString( str ); + /* test indexed access of attributes */ r = IXMLDOMNamedNodeMap_get_length( map, &count ); ok ( r == S_OK, "get_length wrong code\n");