[PATCH] vbscript: Handle negative argument in Space().

Nikolay Sivov nsivov at codeweavers.com
Mon May 23 01:10:30 CDT 2022


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/vbscript/global.c      | 11 +++++++----
 dlls/vbscript/tests/api.vbs | 15 +++++++++++++++
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c
index 15c0bb0958e..80348a5288f 100644
--- a/dlls/vbscript/global.c
+++ b/dlls/vbscript/global.c
@@ -1586,14 +1586,17 @@ static HRESULT Global_Space(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt,
 
     TRACE("%s\n", debugstr_variant(arg));
 
+    assert(args_cnt == 1);
+
+    if(V_VT(arg) == VT_NULL)
+        return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE);
+
     hres = to_int(arg, &n);
     if(FAILED(hres))
         return hres;
 
-    if(n < 0) {
-        FIXME("n = %d\n", n);
-        return E_NOTIMPL;
-    }
+    if(n < 0)
+        return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL);
 
     if(!res)
         return S_OK;
diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs
index 3b67e920c3d..617589053c6 100644
--- a/dlls/vbscript/tests/api.vbs
+++ b/dlls/vbscript/tests/api.vbs
@@ -747,6 +747,21 @@ Call ok(Space(4.5) = "    ", "Space(4.5) = " & Space(4.5) & """")
 Call ok(Space(0.5) = "", "Space(0.5) = " & Space(0.5) & """")
 Call ok(Space(1.5) = "  ", "Space(1.5) = " & Space(1.5) & """")
 Call ok(Space("1") = " ", "Space(""1"") = " & Space("1") & """")
+Call ok(Space(Empty) = "", "Space(Empty) = " & Space(Empty) & """")
+
+sub testSpaceError()
+    on error resume next
+    call Err.clear()
+    call Space(-1)
+    call ok(Err.number = 5, "Err.number = " & Err.number)
+    call Err.clear()
+    call Space("-1")
+    call ok(Err.number = 5, "Err.number = " & Err.number)
+    call Err.clear()
+    call Space(Null)
+    call ok(Err.number = 94, "Err.number = " & Err.number)
+end sub
+call testSpaceError()
 
 sub test_string(cnt, char, exp)
     call ok(String(cnt, char) = exp, "String(" & cnt & ", """ & char & """ = """ & _
-- 
2.35.1




More information about the wine-devel mailing list