Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51911 Signed-off-by: Robert Wilhelm robert.wilhelm@gmx.net --- 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") -- 2.31.1