wine/dlls/msi msi.c

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 9 04:58:24 CST 2005


ChangeSet ID:	21190
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/09 04:58:24

Modified files:
	dlls/msi       : msi.c 

Log message:
	Mike McCormack <mike at codeweavers.com>
	Make sure we only CoUninitialize after successfully initializing.
	Fix the address of the returned IShellLinkDataList interface.

Patch: http://cvs.winehq.org/patch.py?id=21190

Old revision  New revision  Changes     Path
 1.114         1.115         +5 -6       wine/dlls/msi/msi.c

Index: wine/dlls/msi/msi.c
diff -u -p wine/dlls/msi/msi.c:1.114 wine/dlls/msi/msi.c:1.115
--- wine/dlls/msi/msi.c:1.114	9 Nov 2005 10:58:24 -0000
+++ wine/dlls/msi/msi.c	9 Nov 2005 10:58:24 -0000
@@ -1818,14 +1818,12 @@ UINT WINAPI MsiGetShortcutTargetW( LPCWS
     IShellLinkDataList *dl = NULL;
     IPersistFile *pf = NULL;
     LPEXP_DARWIN_LINK darwin = NULL;
-    HRESULT r;
+    HRESULT r, init;
 
     TRACE("%s %p %p %p\n", debugstr_w(szShortcutTarget),
           szProductCode, szFeatureId, szComponentCode );
 
-    r = CoInitialize(NULL);
-    if( FAILED( r ) )
-        return ERROR_FUNCTION_FAILED;
+    init = CoInitialize(NULL);
 
     r = CoCreateInstance( &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                           &IID_IPersistFile, (LPVOID*) &pf );
@@ -1836,7 +1834,7 @@ UINT WINAPI MsiGetShortcutTargetW( LPCWS
         if( SUCCEEDED( r ) )
         {
             r = IPersistFile_QueryInterface( pf, &IID_IShellLinkDataList,
-                                             (LPVOID*) dl );
+                                             (LPVOID*) &dl );
             if( SUCCEEDED( r ) )
             {
                 IShellLinkDataList_CopyDataBlock( dl, EXP_DARWIN_ID_SIG,
@@ -1847,7 +1845,8 @@ UINT WINAPI MsiGetShortcutTargetW( LPCWS
         IPersistFile_Release( pf );
     }
 
-    CoUninitialize();
+    if (SUCCEEDED(init))
+        CoUninitialize();
 
     TRACE("darwin = %p\n", darwin);
 



More information about the wine-cvs mailing list