Module: wine Branch: master Commit: 120b2209794f346c072f5064e97b54c3378c329f URL: https://source.winehq.org/git/wine.git/?a=commit;h=120b2209794f346c072f5064e...
Author: Dmitry Kislyuk dimaki@rocketmail.com Date: Wed Aug 5 14:53:31 2020 -0500
vbscript: Return correct error for null start in InStr and more tests.
Signed-off-by: Dmitry Kislyuk dimaki@rocketmail.com Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/vbscript/global.c | 3 +++ dlls/vbscript/tests/api.vbs | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index abb4b7933b..414ede5ed0 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -1662,6 +1662,9 @@ static HRESULT Global_InStr(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, }
if(startv) { + if(V_VT(startv) == VT_NULL) + return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE); + hres = to_int(startv, &start); if(FAILED(hres)) return hres; diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 0c37c3c843..f829afc101 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -435,6 +435,34 @@ Call ok(x = 3, "InStr returned " & x) x = InStr(1, "23456", 34, 1) Call ok(x = 2, "InStr returned " & x)
+x = InStr(2, "", "abcd", 0) +Call ok(x = 0, "InStr returned " & x) + +x = InStr(4, "abcdef", "", 0) +Call ok(x = 4, "InStr returned " & x) + +x = InStr(20, "abcdef", "", 0) +Call ok(x = 0, "InStr returned " & x) + +x = InStr(4, "", "", 0) +Call ok(x = 0, "InStr returned " & x) + +Sub testInStrError(arg1, arg2, arg3, arg4, error_num) + on error resume next + Dim x + + Call Err.clear() + x = InStr(arg1, arg2, arg3, arg4) + Call ok(Err.number = error_num, "Err.number = " & Err.number) +End Sub + +call testInStrError(2, "abcd", null, 0, 0) +call testInStrError(2, Null, "abcd", 0, 0) +call testInStrError(Null, "abcd", "abcd", 0, 94) +call testInStrError(2, "abcd", "abcd", null, 94) +call testInStrError(-20, "abcd", "abcd", 1, 5) +Call testInStrError(2, "abcd", "abcd", 10, 5) +
x = InStrRev("bcabcd", "bc") Call ok(x = 4, "InStrRev returned " & x)