Brendan McGrath : msi: Set stale function pointers to NULL.

Alexandre Julliard julliard at winehq.org
Mon Nov 26 16:20:10 CST 2018


Module: wine
Branch: master
Commit: 256ca317a2871c62ca121e49f29fc37a64b4fb64
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=256ca317a2871c62ca121e49f29fc37a64b4fb64

Author: Brendan McGrath <brendan at redmandi.com>
Date:   Mon Nov 26 20:23:34 2018 +1100

msi: Set stale function pointers to NULL.

A crash occurs during install of dotnet35 on a 64-bit prefix
as when msi_destroy_assembly_caches is called, the mscoree
library is unloaded but the function pointers are not set back
to NULL.

Signed-off-by: Brendan McGrath <brendan at redmandi.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msi/assembly.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/msi/assembly.c b/dlls/msi/assembly.c
index 7857e8b..f46ff02 100644
--- a/dlls/msi/assembly.c
+++ b/dlls/msi/assembly.c
@@ -36,7 +36,6 @@ static HRESULT (WINAPI *pCreateAssemblyCacheNet11)( IAssemblyCache **, DWORD );
 static HRESULT (WINAPI *pCreateAssemblyCacheNet20)( IAssemblyCache **, DWORD );
 static HRESULT (WINAPI *pCreateAssemblyCacheNet40)( IAssemblyCache **, DWORD );
 static HRESULT (WINAPI *pCreateAssemblyCacheSxs)( IAssemblyCache **, DWORD );
-static HRESULT (WINAPI *pLoadLibraryShim)( LPCWSTR, LPCWSTR, LPVOID, HMODULE * );
 static HRESULT (WINAPI *pGetFileVersion)( LPCWSTR, LPWSTR, DWORD, DWORD * );
 static HRESULT (WINAPI *pCreateAssemblyNameObject)( IAssemblyName **, LPCWSTR, DWORD, LPVOID );
 static HRESULT (WINAPI *pCreateAssemblyEnum)( IAssemblyEnum **, IUnknown *, IAssemblyName *, DWORD, LPVOID );
@@ -52,6 +51,7 @@ static BOOL init_function_pointers( void )
     static const WCHAR szVersion11[] = {'v','1','.','1','.','4','3','2','2',0};
     static const WCHAR szVersion20[] = {'v','2','.','0','.','5','0','7','2','7',0};
     static const WCHAR szVersion40[] = {'v','4','.','0','.','3','0','3','1','9',0};
+    HRESULT (WINAPI *pLoadLibraryShim)( LPCWSTR, LPCWSTR, LPVOID, HMODULE * );
     WCHAR path[MAX_PATH];
     DWORD len = GetSystemDirectoryW( path, MAX_PATH );
 
@@ -121,6 +121,9 @@ void msi_destroy_assembly_caches( MSIPACKAGE *package )
     pCreateAssemblyCacheNet11 = NULL;
     pCreateAssemblyCacheNet20 = NULL;
     pCreateAssemblyCacheNet40 = NULL;
+    pGetFileVersion = NULL;
+    pCreateAssemblyNameObject = NULL;
+    pCreateAssemblyEnum = NULL;
     FreeLibrary( hfusion10 );
     FreeLibrary( hfusion11 );
     FreeLibrary( hfusion20 );




More information about the wine-cvs mailing list