https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0d13a87670e4584c01460e...
commit 0d13a87670e4584c01460e9b9f76c692d76292ba Author: winesync ros-dev@reactos.org AuthorDate: Sun Mar 13 00:16:17 2022 +0100 Commit: Mark Jansen mark.jansen@reactos.org CommitDate: Sun Mar 20 19:28:06 2022 +0100
[WINESYNC] 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@redmandi.com Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
wine commit id 256ca317a2871c62ca121e49f29fc37a64b4fb64 by Brendan McGrath brendan@redmandi.com --- dll/win32/msi/assembly.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dll/win32/msi/assembly.c b/dll/win32/msi/assembly.c index 7857e8b687f..f46ff02eeb6 100644 --- a/dll/win32/msi/assembly.c +++ b/dll/win32/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 );