mirror of
https://github.com/reactos/wine.git
synced 2025-02-19 20:31:35 +00:00
oleaut32: Support for VT_DISPATCH in VarFix.
This commit is contained in:
parent
2ebe12397f
commit
bd7de42787
@ -4377,10 +4377,20 @@ VarAbs_Exit:
|
||||
HRESULT WINAPI VarFix(LPVARIANT pVarIn, LPVARIANT pVarOut)
|
||||
{
|
||||
HRESULT hRet = S_OK;
|
||||
VARIANT temp;
|
||||
|
||||
VariantInit(&temp);
|
||||
|
||||
TRACE("(%p->(%s%s),%p)\n", pVarIn, debugstr_VT(pVarIn),
|
||||
debugstr_VF(pVarIn), pVarOut);
|
||||
|
||||
/* Handle VT_DISPATCH by storing and taking address of returned value */
|
||||
if ((V_VT(pVarIn) & VT_TYPEMASK) == VT_DISPATCH && ((V_VT(pVarIn) & ~VT_TYPEMASK) == 0))
|
||||
{
|
||||
hRet = VARIANT_FetchDispatchValue(pVarIn, &temp);
|
||||
if (FAILED(hRet)) goto VarFix_Exit;
|
||||
pVarIn = &temp;
|
||||
}
|
||||
V_VT(pVarOut) = V_VT(pVarIn);
|
||||
|
||||
switch (V_VT(pVarIn))
|
||||
@ -4438,8 +4448,10 @@ HRESULT WINAPI VarFix(LPVARIANT pVarIn, LPVARIANT pVarOut)
|
||||
else
|
||||
hRet = DISP_E_TYPEMISMATCH;
|
||||
}
|
||||
VarFix_Exit:
|
||||
if (FAILED(hRet))
|
||||
V_VT(pVarOut) = VT_EMPTY;
|
||||
VariantClear(&temp);
|
||||
|
||||
return hRet;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user