Nikolay Sivov : oleaut32: Fix default parameter variant leak (Valgrind).

Alexandre Julliard julliard at winehq.org
Mon Jan 31 11:26:12 CST 2011


Module: wine
Branch: master
Commit: d902249e54836aa1f7836a74d172ce5b75585a6d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d902249e54836aa1f7836a74d172ce5b75585a6d

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Jan 29 02:12:56 2011 +0300

oleaut32: Fix default parameter variant leak (Valgrind).

---

 dlls/oleaut32/typelib2.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/dlls/oleaut32/typelib2.c b/dlls/oleaut32/typelib2.c
index 8260ef2..f87ed9f 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);
     }




More information about the wine-cvs mailing list