oleaut32: Only BYREF DispCallFunc args whose input args are not BYREF should be changed.

This commit is contained in:
James Hawkins 2006-06-05 17:48:15 -05:00 committed by Alexandre Julliard
parent 0e5bd51d28
commit 585763ffa9

View file

@ -5360,9 +5360,11 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
{
if (wParamFlags & PARAMFLAG_FOUT)
{
hres = VariantChangeType(&pDispParams->rgvarg[pDispParams->cArgs - 1 - i],
&rgvarg[i], 0,
V_VT(&pDispParams->rgvarg[pDispParams->cArgs - 1 - i]));
VARIANTARG *arg = &pDispParams->rgvarg[pDispParams->cArgs - 1 - i];
if ((rgvt[i] == VT_BYREF) && (V_VT(arg) != VT_BYREF))
hres = VariantChangeType(arg, &rgvarg[i], 0, V_VT(arg));
if (FAILED(hres))
{
ERR("failed to convert param %d to vt %d\n", i,