shell32: Fix interface leak (Valgrind).
authorNikolay Sivov <nsivov@codeweavers.com>
Tue, 18 Jan 2011 19:45:03 +0000 (22:45 +0300)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 19 Jan 2011 11:23:59 +0000 (12:23 +0100)
dlls/shell32/shfldr_fs.c

index 084dffd08c0087cba806e77db0eb9354b99bcda0..c0e9ae598b15d7aa22e3b0d2d708b188f9a86e4a 100644 (file)
@@ -314,8 +314,7 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
         'B','i','n','d',' ','D','a','t','a',0 };
     IFileSystemBindData *fsbd = NULL;
     LPITEMIDLIST pidl = NULL;
-    IUnknown *param = NULL;
-    WIN32_FIND_DATAW wfd;
+    IUnknown *unk = NULL;
     HRESULT r;
 
     TRACE("%p %s\n", pbc, debugstr_w(path));
@@ -324,14 +323,15 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
         return NULL;
 
     /* see if the caller bound File System Bind Data */
-    r = IBindCtx_GetObjectParam( pbc, szfsbc, &param );
+    r = IBindCtx_GetObjectParam( pbc, szfsbc, &unk );
     if (FAILED(r))
         return NULL;
 
-    r = IUnknown_QueryInterface( param, &IID_IFileSystemBindData,
-                                 (LPVOID*) &fsbd );
+    r = IUnknown_QueryInterface( unk, &IID_IFileSystemBindData, (void**)&fsbd );
     if (SUCCEEDED(r))
     {
+        WIN32_FIND_DATAW wfd;
+
         r = IFileSystemBindData_GetFindData( fsbd, &wfd );
         if (SUCCEEDED(r))
         {
@@ -340,6 +340,7 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
         }
         IFileSystemBindData_Release( fsbd );
     }
+    IUnknown_Release( unk );
     
     return pidl;
 }