[pkg-wine-party] [SCM] Debian Wine packaging branch, wheezy, updated. wine-1.4-7-302-gb61b690

Alexandre Julliard julliard at winehq.org
Sun Jun 17 20:03:46 UTC 2012


The following commit has been merged in the wheezy branch:
commit 791de376fe8a39f1d91bb250017951aae5bc72d9
Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed May 23 15:36:04 2012 +0200

    vbscript: Add support for integer values in conditional jumps.
    (cherry picked from commit d090c39470b57fa931299c7c0b0b8027a8f181fd)

diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index 4be1d43..24d82ae 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -318,6 +318,34 @@ static inline void release_val(variant_val_t *v)
         VariantClear(v->v);
 }
 
+static int stack_pop_bool(exec_ctx_t *ctx, BOOL *b)
+{
+    variant_val_t val;
+    HRESULT hres;
+
+    hres = stack_pop_val(ctx, &val);
+    if(FAILED(hres))
+        return hres;
+
+    switch (V_VT(val.v))
+    {
+    case VT_BOOL:
+        *b = V_BOOL(val.v);
+        break;
+    case VT_I2:
+        *b = V_I2(val.v);
+        break;
+    case VT_I4:
+        *b = V_I4(val.v);
+        break;
+    default:
+        FIXME("unsupported for %s\n", debugstr_variant(val.v));
+        release_val(&val);
+        return E_NOTIMPL;
+    }
+    return S_OK;
+}
+
 static HRESULT stack_pop_disp(exec_ctx_t *ctx, IDispatch **ret)
 {
     VARIANT *v = stack_pop(ctx);
@@ -827,22 +855,16 @@ static HRESULT interp_jmp(exec_ctx_t *ctx)
 static HRESULT interp_jmp_false(exec_ctx_t *ctx)
 {
     const unsigned arg = ctx->instr->arg1.uint;
-    variant_val_t val;
     HRESULT hres;
+    BOOL b;
 
     TRACE("%u\n", arg);
 
-    hres = stack_pop_val(ctx, &val);
+    hres = stack_pop_bool(ctx, &b);
     if(FAILED(hres))
         return hres;
 
-    if(V_VT(val.v) != VT_BOOL) {
-        FIXME("unsupported for %s\n", debugstr_variant(val.v));
-        release_val(&val);
-        return E_NOTIMPL;
-    }
-
-    if(V_BOOL(val.v))
+    if(b)
         ctx->instr++;
     else
         instr_jmp(ctx, ctx->instr->arg1.uint);
@@ -852,22 +874,16 @@ static HRESULT interp_jmp_false(exec_ctx_t *ctx)
 static HRESULT interp_jmp_true(exec_ctx_t *ctx)
 {
     const unsigned arg = ctx->instr->arg1.uint;
-    variant_val_t val;
     HRESULT hres;
+    BOOL b;
 
     TRACE("%u\n", arg);
 
-    hres = stack_pop_val(ctx, &val);
+    hres = stack_pop_bool(ctx, &b);
     if(FAILED(hres))
         return hres;
 
-    if(V_VT(val.v) != VT_BOOL) {
-        FIXME("unsupported for %s\n", debugstr_variant(val.v));
-        release_val(&val);
-        return E_NOTIMPL;
-    }
-
-    if(V_BOOL(val.v))
+    if(b)
         instr_jmp(ctx, ctx->instr->arg1.uint);
     else
         ctx->instr++;

-- 
Debian Wine packaging



More information about the pkg-wine-party mailing list