ole32: Fix some memory leaks (Try 2)
Andrew Talbot
andrew.talbot at talbotville.com
Mon Oct 1 14:17:29 CDT 2007
Changelog:
ole32: Fix some memory leaks.
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*
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*
/* 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*
}
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;
+ }
}
}
More information about the wine-patches
mailing list