Nikolay Sivov : msxml3: Avoid SysStringLen() testing for an empty string in ::createNode().

Alexandre Julliard julliard at winehq.org
Mon Jun 14 13:01:16 CDT 2010


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sun Jun 13 04:23:23 2010 +0400

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 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;




More information about the wine-cvs mailing list