From: Nikolay Sivov Date: Fri, 28 Jan 2011 23:12:56 +0000 (+0300) Subject: oleaut32: Fix default parameter variant leak (Valgrind). X-Git-Tag: wine-1.3.13~157 X-Git-Url: http://git.etersoft.ru/projects/?a=commitdiff_plain;h=d902249e54836aa1f7836a74d172ce5b75585a6d;p=wine%2Feterwine.git oleaut32: Fix default parameter variant leak (Valgrind). --- diff --git a/dlls/oleaut32/typelib2.c b/dlls/oleaut32/typelib2.c index 8260ef2881..f87ed9f961 100644 --- a/dlls/oleaut32/typelib2.c +++ b/dlls/oleaut32/typelib2.c @@ -3313,6 +3313,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncDesc( } (*ppFuncDesc)->lprgelemdescParam[i].u.paramdesc.pparamdescex->cBytes = sizeof(PARAMDESCEX); + VariantInit(&(*ppFuncDesc)->lprgelemdescParam[i].u.paramdesc.pparamdescex->varDefaultValue); hres = ctl2_decode_variant(This->typelib, typedata[hdr_len + i], &(*ppFuncDesc)->lprgelemdescParam[i].u.paramdesc.pparamdescex->varDefaultValue); if (FAILED(hres)) { @@ -3749,7 +3750,11 @@ static void WINAPI ITypeInfo2_fnReleaseFuncDesc( if (pFuncDesc->lprgelemdescParam[i].tdesc.vt != VT_USERDEFINED) release_typedesc(pFuncDesc->lprgelemdescParam[i].tdesc.u.lptdesc); - heap_free(pFuncDesc->lprgelemdescParam[i].u.paramdesc.pparamdescex); + if (pFuncDesc->lprgelemdescParam[i].u.paramdesc.pparamdescex) + { + VariantClear(&pFuncDesc->lprgelemdescParam[i].u.paramdesc.pparamdescex->varDefaultValue); + heap_free(pFuncDesc->lprgelemdescParam[i].u.paramdesc.pparamdescex); + } } heap_free(pFuncDesc->lprgelemdescParam); }