Module: wine Branch: oldstable Commit: 11512f094016f6ed6361e4eb87cfb3c57a8a27c9 URL: https://source.winehq.org/git/wine.git/?a=commit;h=11512f094016f6ed6361e4eb8... Author: Robert Wilhelm <robert.wilhelm(a)gmx.net> Date: Fri Sep 25 16:46:21 2020 +0200 vbscript: Fix handling zero and negative number arguments in err.raise. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49172 Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 7d48c52816e170eb44dcb64a236345aaf9cad7fd) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/vbscript/global.c | 2 +- dlls/vbscript/tests/api.vbs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 17d3639a105..2452b6e6351 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -3090,7 +3090,7 @@ static HRESULT Err_Raise(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, VA hres = to_int(args, &code); if(FAILED(hres)) return hres; - if(code > 0 && code > 0xffff) + if(code == 0 || code > 0xffff) return E_INVALIDARG; if(args_cnt >= 2) diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 413c9a8b9b6..a0948aefe9f 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1693,13 +1693,29 @@ end sub sub testErrRaise() on error resume next call ok(err.number = 0, "err.number = " & err.number) + err.raise 0 + call ok(err.number = 5, "err.number = " & err.number) err.raise 1 call ok(err.number = 1, "err.number = " & err.number) err.raise call ok(err.number = 450, "err.number = " & err.number) call testErrNumber(450) + err.raise &h8000 + call ok(err.number = -32768, "err.number = " & err.number) + err.raise &hffff + call ok(err.number = -1, "err.number = " & err.number) err.raise &h10000& call ok(err.number = 5, "err.number = " & err.number) + err.raise -3000000000 + call ok(err.number = 6, "err.number = " & err.number) + err.raise -1 + call ok(err.number = -1, "err.number = " & err.number) + err.raise -20 + call ok(err.number = -20, "err.number = " & err.number) + err.raise -&hfff0 + call ok(err.number = 16, "err.number = " & err.number) + err.raise -&h8000 + call ok(err.number = 32768, "err.number = " & err.number) err.clear call ok(getVT(err.source) = "VT_BSTR", "err.source = " & err.source)