Alex Villacís Lasso : oleaut32: Support for VT_DISPATCH in VarNot.
Module: wine Branch: master Commit: 2ebe12397f3592db7594c59d04fb5c373bf4df76 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ebe12397f3592db7594c59d04... Author: Alex Villacís Lasso <a_villacis(a)palosanto.com> Date: Mon Jun 4 13:02:22 2007 -0500 oleaut32: Support for VT_DISPATCH in VarNot. --- dlls/oleaut32/variant.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 03b4c31..bdc4e93 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -4891,10 +4891,21 @@ HRESULT WINAPI VarNot(LPVARIANT pVarIn, LPVARIANT pVarOut) { VARIANT varIn; 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 VarNot_Exit; + pVarIn = &temp; + } + V_VT(pVarOut) = V_VT(pVarIn); switch (V_VT(pVarIn)) @@ -4966,8 +4977,10 @@ HRESULT WINAPI VarNot(LPVARIANT pVarIn, LPVARIANT pVarOut) else hRet = DISP_E_TYPEMISMATCH; } +VarNot_Exit: if (FAILED(hRet)) V_VT(pVarOut) = VT_EMPTY; + VariantClear(&temp); return hRet; }
participants (1)
-
Alexandre Julliard