Andrew Talbot : ole32: Fix some memory leaks.

Alexandre Julliard julliard at winehq.org
Tue Oct 2 06:52:40 CDT 2007


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

Author: Andrew Talbot <andrew.talbot at 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;
+                }
             }
         }
 




More information about the wine-cvs mailing list