Module: wine Branch: master Commit: 89c9a737f4efe25f81793f7198fc70727b30aa92 URL: http://source.winehq.org/git/wine.git/?a=commit;h=89c9a737f4efe25f81793f7198...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Sep 14 13:00:12 2011 +0200
vbscript: Added interp_eqv implementation.
---
dlls/vbscript/interp.c | 22 ++++++++++++++++++++-- dlls/vbscript/tests/lang.vbs | 4 ++++ 2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 8a875ee..1c01933 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -638,8 +638,26 @@ static HRESULT interp_xor(exec_ctx_t *ctx)
static HRESULT interp_eqv(exec_ctx_t *ctx) { - FIXME("\n"); - return E_NOTIMPL; + variant_val_t r, l; + VARIANT v; + HRESULT hres; + + TRACE("\n"); + + hres = stack_pop_val(ctx, &r); + if(FAILED(hres)) + return hres; + + hres = stack_pop_val(ctx, &l); + if(SUCCEEDED(hres)) { + hres = VarEqv(l.v, r.v, &v); + release_val(&l); + } + release_val(&r); + if(FAILED(hres)) + return hres; + + return stack_push(ctx, &v); }
static HRESULT interp_imp(exec_ctx_t *ctx) diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 329df36..0b24b2d 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -102,6 +102,10 @@ call ok(not (false xor false), "false xor false is true?") call ok(not (true or false xor true), "true or false xor true is true?") call ok(not (true xor false or true), "true xor false or true is true?")
+call ok(false eqv false, "false does not equal false?") +call ok(not (false eqv true), "false equals true?") +call ok(getVT(false eqv null) = "VT_NULL", "getVT(false eqv null) = " & getVT(false eqv null)) + x = 3 Call ok(2+2 = 4, "2+2 = " & (2+2)) Call ok(false + 6 + true = 5, "false + 6 + true <> 5")