Jacek Caban : vbscript: Added interp_neg implementation.
Alexandre Julliard
julliard at winehq.org
Mon Sep 12 11:43:00 CDT 2011
Module: wine
Branch: master
Commit: 8e1ccb8be6efd4b31fac18ae9c31454311848da0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8e1ccb8be6efd4b31fac18ae9c31454311848da0
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Sep 12 12:31:47 2011 +0200
vbscript: Added interp_neg implementation.
---
dlls/vbscript/interp.c | 16 ++++++++++++++--
dlls/vbscript/tests/lang.vbs | 6 ++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index a70ca5f..67230da 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -393,8 +393,20 @@ static HRESULT interp_concat(exec_ctx_t *ctx)
static HRESULT interp_neg(exec_ctx_t *ctx)
{
- FIXME("\n");
- return E_NOTIMPL;
+ variant_val_t val;
+ VARIANT v;
+ HRESULT hres;
+
+ hres = stack_pop_val(ctx, &val);
+ if(FAILED(hres))
+ return hres;
+
+ hres = VarNeg(val.v, &v);
+ release_val(&val);
+ if(FAILED(hres))
+ return hres;
+
+ return stack_push(ctx, &v);
}
static const instr_func_t op_funcs[] = {
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index dc64c91..9b1d771 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -35,6 +35,10 @@ Call ok(0 = 0.0, "0 <> 0.0")
Call ok(16 = &h10&, "16 <> &h10&")
Call ok(010 = 10, "010 <> 10")
Call ok(10. = 10, "10. <> 10")
+Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
+Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
+Call ok(--1 = 1, "--1 = " & --1)
+Call ok(-empty = 0, "-empty = " & (-empty))
Call ok(getVT(false) = "VT_BOOL", "getVT(false) is not VT_BOOL")
Call ok(getVT(true) = "VT_BOOL", "getVT(true) is not VT_BOOL")
@@ -53,6 +57,8 @@ Call ok(getVT(&h10000&) = "VT_I4", "getVT(&h10000&) is not VT_I4")
Call ok(getVT(&H10000&) = "VT_I4", "getVT(&H10000&) is not VT_I4")
Call ok(getVT(&hffFFffFF&) = "VT_I2", "getVT(&hffFFffFF&) is not VT_I2")
Call ok(getVT(1 & 100000) = "VT_BSTR", "getVT(1 & 100000) is not VT_BSTR")
+Call ok(getVT(-empty) = "VT_I2", "getVT(-empty) = " & getVT(-empty))
+Call ok(getVT(-null) = "VT_NULL", "getVT(-null) = " & getVT(-null))
Call ok("ab" & "cd" = "abcd", """ab"" & ""cd"" <> ""abcd""")
Call ok("ab " & null = "ab ", """ab"" & null = " & ("ab " & null))
More information about the wine-cvs
mailing list