Jacek Caban : vbscript: Return correct error when builtin call argument count is invalid.

Alexandre Julliard julliard at winehq.org
Wed Aug 21 14:39:33 CDT 2019


Module: wine
Branch: master
Commit: 6cc7b0e8d5013bdc492ff1f31c2c2aa82351b30e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6cc7b0e8d5013bdc492ff1f31c2c2aa82351b30e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Aug 21 20:22:18 2019 +0200

vbscript: Return correct error when builtin call argument count is invalid.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/vbscript/tests/api.vbs | 22 ++++++++++++++++++++++
 dlls/vbscript/vbdisp.c      |  4 ++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs
index 8ebbfb6..b252d58 100644
--- a/dlls/vbscript/tests/api.vbs
+++ b/dlls/vbscript/tests/api.vbs
@@ -237,6 +237,17 @@ Call ok(UBound(arr2) = 2, "UBound(x) = " & UBound(x))
 Call ok(UBound(arr2, 1) = 2, "UBound(x) = " & UBound(x))
 Call ok(UBound(arr2, 2) = 4, "UBound(x) = " & UBound(x))
 
+sub testUBoundError()
+    on error resume next
+    call Err.clear()
+    call UBound()
+    call ok(Err.number = 450, "Err.number = " & Err.number)
+    call Err.clear()
+    call UBound(arr, 1, 2)
+    call ok(Err.number = 450, "Err.number = " & Err.number)
+end sub
+call testUBoundError()
+
 Dim newObject
 Set newObject = New ValClass
 newObject.myval = 1
@@ -494,6 +505,17 @@ TestStrComp "ABC",  Empty,  1,  1
 TestStrComp vbNull, vbNull, 1,  0
 TestStrComp "",     vbNull, 1,  -1
 
+sub testStrCompError()
+    on error resume next
+    call Err.clear()
+    call StrComp()
+    call ok(Err.number = 450, "Err.number = " & Err.number)
+    call Err.clear()
+    call StrComp("a", "a", 0, 1)
+    call ok(Err.number = 450, "Err.number = " & Err.number)
+end sub
+call testStrCompError()
+
 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
 Call ok(Len("") = 0, "Len() = " & Len(""))
 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index d781dbc..a907f40 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -232,8 +232,8 @@ static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD f
     argn = arg_cnt(dp);
 
     if(argn < prop->min_args || argn > (prop->max_args ? prop->max_args : prop->min_args)) {
-        FIXME("invalid number of arguments\n");
-        return E_FAIL;
+        WARN("invalid number of arguments\n");
+        return MAKE_VBSERROR(VBSE_FUNC_ARITY_MISMATCH);
     }
 
     assert(argn < ARRAY_SIZE(args));




More information about the wine-cvs mailing list