From: Jason Millard jsm174@gmail.com
--- dlls/vbscript/interp.c | 24 ++++++++++++++++++++++++ dlls/vbscript/tests/lang.vbs | 8 ++++++++ 2 files changed, 32 insertions(+)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index eb1dcab5f01..7b1284ebf29 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -432,12 +432,36 @@ static int stack_pop_bool(exec_ctx_t *ctx, BOOL *b) case VT_EMPTY: *b = FALSE; break; + case VT_I1: + *b = V_I1(val.v); + break; case VT_I2: *b = V_I2(val.v); break; case VT_I4: *b = V_I4(val.v); break; + case VT_UI1: + *b = V_UI1(val.v); + break; + case VT_UI2: + *b = V_UI2(val.v); + break; + case VT_UI4: + *b = V_UI4(val.v); + break; + case VT_I8: + *b = V_I8(val.v); + break; + case VT_UI8: + *b = V_UI8(val.v); + break; + case VT_R4: + *b = V_R4(val.v); + break; + case VT_R8: + *b = V_R8(val.v); + break; case VT_BSTR: hres = VarBoolFromStr(V_BSTR(val.v), ctx->script->lcid, 0, &vb); if(FAILED(hres)) diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 77e132133b0..37612beac92 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -412,6 +412,14 @@ else end if Call ok(x = 1, "if ""0"" else not executed")
+y = 1.2 +if y then + x = true +else + x = false +end if +Call ok(x, "if y not evaluated as true") + x = 0 if "-1" then x = 1