[PATCH] Avoid SysStringLen() testing for an empty string in ::createNode()

Nikolay Sivov nsivov at codeweavers.com
Sat Jun 12 19:23:23 CDT 2010


---
 dlls/msxml3/domdoc.c       |    2 +-
 dlls/msxml3/tests/domdoc.c |   11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index d72d20b..e24077e 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 a743e51..cbba0cd 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;
-- 
1.5.6.5


--------------020207020207070104010403--



More information about the wine-patches mailing list