Andrew Talbot : ole32: Fix some memory leaks.
Module: wine Branch: master Commit: 001d36b10e452fc2e7a90e1a4a265e33dbeb85af URL: http://source.winehq.org/git/wine.git/?a=commit;h=001d36b10e452fc2e7a90e1a4a... Author: Andrew Talbot <andrew.talbot(a)talbotville.com> Date: Mon Oct 1 20:17:29 2007 +0100 ole32: Fix some memory leaks. --- dlls/ole32/compositemoniker.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c index c49e9b8..825a2ab 100644 --- a/dlls/ole32/compositemoniker.c +++ b/dlls/ole32/compositemoniker.c @@ -1813,12 +1813,16 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker, if (++This->tabLastIndex==This->tabSize){ + LPVOID tab_moniker = This->tabMoniker; This->tabSize+=BLOCK_TAB_SIZE; This->tabMoniker=HeapReAlloc(GetProcessHeap(),0,This->tabMoniker,This->tabSize*sizeof(IMoniker)); - if (This->tabMoniker==NULL) + if (This->tabMoniker==NULL){ + HeapFree(GetProcessHeap(), 0, tab_moniker); + HeapFree(GetProcessHeap(), 0, This); return E_OUTOFMEMORY; + } } } @@ -1862,13 +1866,17 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker, /* resize tabMoniker if needed */ if (This->tabLastIndex==This->tabSize){ + LPVOID tab_moniker = This->tabMoniker; This->tabSize+=BLOCK_TAB_SIZE; This->tabMoniker=HeapReAlloc(GetProcessHeap(),0,This->tabMoniker,This->tabSize*sizeof(IMoniker)); - if (This->tabMoniker==NULL) - return E_OUTOFMEMORY; + if (This->tabMoniker==NULL){ + HeapFree(GetProcessHeap(), 0, tab_moniker); + HeapFree(GetProcessHeap(), 0, This); + return E_OUTOFMEMORY; + } } } else{ @@ -1901,13 +1909,17 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker, } if (This->tabLastIndex==This->tabSize){ + LPVOID tab_moniker = This->tabMoniker; This->tabSize+=BLOCK_TAB_SIZE; This->tabMoniker=HeapReAlloc(GetProcessHeap(),0,This->tabMoniker,This->tabSize*sizeof(IMoniker)); - if (This->tabMoniker==NULL) + if (This->tabMoniker==NULL){ + HeapFree(GetProcessHeap(), 0, tab_moniker); + HeapFree(GetProcessHeap(), 0, This); return E_OUTOFMEMORY; + } } }
participants (1)
-
Alexandre Julliard