Robert Wilhelm : vbscript: Support VT_BSTR in stack_pop_bool.
Module: wine Branch: master Commit: b9e38a41eabbe444ba55eab7a0a5573dfb7f9a6b URL: https://source.winehq.org/git/wine.git/?a=commit;h=b9e38a41eabbe444ba55eab7a... Author: Robert Wilhelm <robert.wilhelm(a)gmx.net> Date: Tue Nov 2 21:39:40 2021 +0100 vbscript: Support VT_BSTR in stack_pop_bool. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51911 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> --- dlls/vbscript/interp.c | 7 +++++++ dlls/vbscript/tests/lang.vbs | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 48863068013..2d9d1eee741 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -417,6 +417,7 @@ static int stack_pop_bool(exec_ctx_t *ctx, BOOL *b) { variant_val_t val; HRESULT hres; + VARIANT_BOOL vb; hres = stack_pop_val(ctx, &val); if(FAILED(hres)) @@ -437,6 +438,12 @@ static int stack_pop_bool(exec_ctx_t *ctx, BOOL *b) case VT_I4: *b = V_I4(val.v); break; + case VT_BSTR: + hres = VarBoolFromStr(V_BSTR(val.v), ctx->script->lcid, 0, &vb); + if(FAILED(hres)) + return hres; + *b=vb; + break; default: FIXME("unsupported for %s\n", debugstr_variant(val.v)); release_val(&val); diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index dc2acbae69c..f147351b1af 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -357,6 +357,22 @@ while empty ok false, "while empty executed" wend +x = 0 +if "0" then + ok false, "if ""0"" executed" +else + x = 1 +end if +Call ok(x = 1, "if ""0"" else not executed") + +x = 0 +if "-1" then + x = 1 +else + ok false, "if ""-1"" else executed" +end if +Call ok(x = 1, "if ""-1"" not executed") + x = 0 WHILE x < 3 : x = x + 1 : Wend Call ok(x = 3, "x not equal to 3")
participants (1)
-
Alexandre Julliard