Andrew Talbot : shell32: Fix some memory leaks.

Alexandre Julliard julliard at winehq.org
Fri Oct 5 04:55:56 CDT 2007


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

Author: Andrew Talbot <andrew.talbot at talbotville.com>
Date:   Thu Oct  4 20:14:38 2007 +0100

shell32: Fix some memory leaks.

---

 dlls/shell32/shelllink.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index b6f4b02..7778b58 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -404,6 +404,7 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
     LPWSTR buffer;
     STARTUPINFOW si;
     PROCESS_INFORMATION pi;
+    BOOL ret;
 
     len = sizeof(szFormat) + lstrlenW( szLink ) * sizeof(WCHAR);
     buffer = HeapAlloc( GetProcessHeap(), 0, len );
@@ -416,11 +417,18 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
 
     memset(&si, 0, sizeof(si));
     si.cb = sizeof(si);
-    if (!CreateProcessW( NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) return FALSE;
-    CloseHandle( pi.hProcess );
-    CloseHandle( pi.hThread );
 
-    return TRUE;
+    ret = CreateProcessW( NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi );
+
+    HeapFree( GetProcessHeap(), 0, buffer );
+
+    if (ret)
+    {
+        CloseHandle( pi.hProcess );
+        CloseHandle( pi.hThread );
+    }
+
+    return ret;
 }
 
 static HRESULT WINAPI IPersistFile_fnSave(IPersistFile* iface, LPCOLESTR pszFileName, BOOL fRemember)




More information about the wine-cvs mailing list