Mike McCormack : msi: Fix a possible memory leak.

Alexandre Julliard julliard at wine.codeweavers.com
Wed May 24 04:00:33 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 20c5746649f2d4051d05ea5ecd33d1c2b6fe504e
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=20c5746649f2d4051d05ea5ecd33d1c2b6fe504e

Author: Mike McCormack <mike at codeweavers.com>
Date:   Wed May 24 17:41:04 2006 +0900

msi: Fix a possible memory leak.

---

 dlls/msi/action.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 54a5b47..aaa5886 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -2816,8 +2816,8 @@ static UINT ITERATE_CreateShortcuts(MSIR
     LPCWSTR buffer, extension;
     MSICOMPONENT *comp;
     static const WCHAR szlnk[]={'.','l','n','k',0};
-    IShellLinkW *sl;
-    IPersistFile *pf;
+    IShellLinkW *sl = NULL;
+    IPersistFile *pf = NULL;
     HRESULT res;
 
     buffer = MSI_RecordGetString(row,4);
@@ -2841,17 +2841,17 @@ static UINT ITERATE_CreateShortcuts(MSIR
     res = CoCreateInstance( &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                     &IID_IShellLinkW, (LPVOID *) &sl );
 
-    if (FAILED(res))
+    if (FAILED( res ))
     {
-        ERR("Is IID_IShellLink\n");
-        return ERROR_SUCCESS;
+        ERR("CLSID_ShellLink not available\n");
+        goto err;
     }
 
     res = IShellLinkW_QueryInterface( sl, &IID_IPersistFile,(LPVOID*) &pf );
-    if( FAILED( res ) )
+    if (FAILED( res ))
     {
-        ERR("Is IID_IPersistFile\n");
-        return ERROR_SUCCESS;
+        ERR("QueryInterface(IID_IPersistFile) failed\n");
+        goto err;
     }
 
     buffer = MSI_RecordGetString(row,2);
@@ -2937,8 +2937,11 @@ static UINT ITERATE_CreateShortcuts(MSIR
 
     msi_free(target_file);    
 
-    IPersistFile_Release( pf );
-    IShellLinkW_Release( sl );
+err:
+    if (pf)
+        IPersistFile_Release( pf );
+    if (sl)
+        IShellLinkW_Release( sl );
 
     return ERROR_SUCCESS;
 }




More information about the wine-cvs mailing list