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