Jacek Caban : vbscript: Pass arguments to 1-arg functions directly if they are VT_VARIANT|VT_BYREF .

Alexandre Julliard julliard at winehq.org
Tue Oct 11 14:03:39 CDT 2011


Module: wine
Branch: master
Commit: 1c936039ed716fd6fcda3b31262b898c30fff9d3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1c936039ed716fd6fcda3b31262b898c30fff9d3

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Oct 11 14:59:06 2011 +0200

vbscript: Pass arguments to 1-arg functions directly if they are VT_VARIANT|VT_BYREF.

---

 dlls/vbscript/vbdisp.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index d083d74..e22e060 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -133,6 +133,8 @@ static HRESULT invoke_variant_prop(vbdisp_t *This, VARIANT *v, WORD flags, DISPP
 
 static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD flags, DISPPARAMS *dp, VARIANT *res)
 {
+    VARIANT *args;
+
     switch(flags) {
     case DISPATCH_PROPERTYGET:
         if(!(prop->flags & (BP_GET|BP_GETPUT))) {
@@ -166,7 +168,12 @@ static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD f
         return E_FAIL;
     }
 
-    return prop->proc(This, dp->rgvarg, dp->cArgs, res);
+    if(arg_cnt(dp) == 1 && V_VT(dp->rgvarg) == (VT_BYREF|VT_VARIANT))
+        args = V_VARIANTREF(dp->rgvarg);
+    else
+        args = dp->rgvarg;
+
+    return prop->proc(This, args, dp->cArgs, res);
 }
 
 static BOOL run_terminator(vbdisp_t *This)




More information about the wine-cvs mailing list