Robert Shearman : oleaut32:
Support values being passed into VT_VARIANT|VT_BYREF typed parameters
in ITypeInfo ::Invoke.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 5 15:24:18 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 5e8c877f96434db9c9dc3002d8f771986edbbed3
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=5e8c877f96434db9c9dc3002d8f771986edbbed3
Author: Robert Shearman <rob at codeweavers.com>
Date: Wed May 3 22:22:08 2006 +0100
oleaut32: Support values being passed into VT_VARIANT|VT_BYREF typed parameters in ITypeInfo::Invoke.
---
dlls/oleaut32/typelib.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 43dfb73..9902cf9 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -5240,6 +5240,18 @@ static HRESULT WINAPI ITypeInfo_fnInvoke
if (rgvt[i] == VT_VARIANT)
VariantCopy(&rgvarg[i], src_arg);
+ else if (rgvt[i] == (VT_VARIANT | VT_BYREF))
+ {
+ if (rgvt[i] == V_VT(src_arg))
+ V_VARIANTREF(&rgvarg[i]) = V_VARIANTREF(src_arg);
+ else
+ {
+ VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams);
+ hres = VariantCopy(&missing_arg[i], src_arg);
+ V_VARIANTREF(&rgvarg[i]) = &missing_arg[i];
+ }
+ V_VT(&rgvarg[i]) = rgvt[i];
+ }
else if ((rgvt[i] & VT_BYREF) && !V_ISBYREF(src_arg))
{
VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams);
More information about the wine-cvs
mailing list