From 36117911171dc30fd1c64ce972ecf7cc479bb63f Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sun, 13 Jun 2010 04:23:23 +0400 Subject: [PATCH] msxml3: Avoid SysStringLen() testing for an empty string in ::createNode(). --- dlls/msxml3/domdoc.c | 2 +- dlls/msxml3/tests/domdoc.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index d72d20be8dc..e24077e7870 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -1368,7 +1368,7 @@ static HRESULT WINAPI domdoc_createNode( case NODE_ATTRIBUTE: case NODE_ENTITY_REFERENCE: case NODE_PROCESSING_INSTRUCTION: - if (!name || SysStringLen(name) == 0) return E_FAIL; + if (!name || *name == 0) return E_FAIL; default: break; } diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index a743e51d391..cbba0cd8521 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -1988,6 +1988,17 @@ static void test_create(void) if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); SysFreeString(str); + /* a name is required for attribute, try a BSTR with first null wchar */ + V_VT(&var) = VT_I1; + V_I1(&var) = NODE_ATTRIBUTE; + str = SysAllocString( szstr1 ); + str[0] = 0; + node = (IXMLDOMNode*)0x1; + r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok( r == E_FAIL, "returns %08x\n", r ); + ok( node == (void*)0x1, "expected same ptr, got %p\n", node); + SysFreeString(str); + /* NODE_PROCESSING_INSTRUCTION */ V_VT(&var) = VT_I1; V_I1(&var) = NODE_PROCESSING_INSTRUCTION;