oleaut32: Convert void return types to the VT_EMPTY variant type in ITypeInfo::Invoke.

This commit is contained in:
Robert Shearman 2006-07-13 13:07:36 +01:00 committed by Alexandre Julliard
parent 797bdbc2d9
commit f9c9a2bf3d
1 changed files with 10 additions and 3 deletions

View File

@ -5363,9 +5363,16 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
goto func_fail; /* FIXME: we don't free changed types here */
}
V_VT(&varresult) = 0;
hres = typedescvt_to_variantvt((ITypeInfo *)iface, &func_desc->elemdescFunc.tdesc, &V_VT(&varresult));
if (FAILED(hres)) goto func_fail; /* FIXME: we don't free changed types here */
/* VT_VOID is a special case for return types, so it is not
* handled in the general function */
if (func_desc->elemdescFunc.tdesc.vt == VT_VOID)
V_VT(&varresult) = VT_EMPTY;
else
{
V_VT(&varresult) = 0;
hres = typedescvt_to_variantvt((ITypeInfo *)iface, &func_desc->elemdescFunc.tdesc, &V_VT(&varresult));
if (FAILED(hres)) goto func_fail; /* FIXME: we don't free changed types here */
}
hres = DispCallFunc(pIUnk, func_desc->oVft, func_desc->callconv,
V_VT(&varresult), func_desc->cParams, rgvt,