Module: wine Branch: master Commit: 1c936039ed716fd6fcda3b31262b898c30fff9d3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c936039ed716fd6fcda3b3126...
Author: Jacek Caban jacek@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)