Jacek Caban : vbscript: Pass arguments to 1-arg functions directly if they are VT_VARIANT|VT_BYREF .
Module: wine Branch: master Commit: 1c936039ed716fd6fcda3b31262b898c30fff9d3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c936039ed716fd6fcda3b3126... Author: Jacek Caban <jacek(a)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)
participants (1)
-
Alexandre Julliard