diff --git a/far/vc_crt_fix.asm b/far/vc_crt_fix.asm index a7eee05443..b9af5667c6 100644 --- a/far/vc_crt_fix.asm +++ b/far/vc_crt_fix.asm @@ -71,5 +71,6 @@ HOOK ReleaseSRWLockExclusive , 4, :dword HOOK SleepConditionVariableSRW , 16, :dword, :dword, :dword, :dword HOOK WakeAllConditionVariable , 4, :dword HOOK TryAcquireSRWLockExclusive , 4, :dword +HOOK InitializeSRWLock , 4, :dword end diff --git a/far/vc_crt_fix_impl.cpp b/far/vc_crt_fix_impl.cpp index 3825f50dac..b7e8bcdc4d 100644 --- a/far/vc_crt_fix_impl.cpp +++ b/far/vc_crt_fix_impl.cpp @@ -412,6 +412,20 @@ extern "C" BOOLEAN WINAPI WRAPPER(TryAcquireSRWLockExclusive)(PSRWLOCK SRWLock) CREATE_AND_RETURN(modules::kernel32, SRWLock); } +// VC2019 +extern "C" void WINAPI WRAPPER(InitializeSRWLock)(PSRWLOCK SRWLock) +{ + struct implementation + { + static void WINAPI impl(PSRWLOCK SRWLock) + { + *(void**)SRWLock = 0; + } + }; + + CREATE_AND_RETURN(modules::kernel32, SRWLock); +} + extern "C" DWORD WINAPI WRAPPER(FlsAlloc)(PFLS_CALLBACK_FUNCTION Callback) { struct implementation diff --git a/far/vc_crt_fix_ulink.cpp b/far/vc_crt_fix_ulink.cpp index e3af06eeda..9ca58d8cd6 100644 --- a/far/vc_crt_fix_ulink.cpp +++ b/far/vc_crt_fix_ulink.cpp @@ -146,6 +146,8 @@ static FARPROC WINAPI delayFailureHook(/*dliNotification*/unsigned dliNotify, return (FARPROC)sim__unimpl_1arg; if(!lstrcmpA(pdli->dlp.szProcName, "TryAcquireSRWLockExclusive")) return (FARPROC)sim__unimpl_1arg; + if(!lstrcmpA(pdli->dlp.szProcName, "InitializeSRWLock")) + return (FARPROC)sim__unimpl_1arg; } return nullptr; } @@ -166,6 +168,7 @@ static FARPROC WINAPI delayFailureHook(/*dliNotification*/unsigned dliNotify, #pragma comment(linker, "/delayload:kernel32.ReleaseSRWLockExclusive") #pragma comment(linker, "/delayload:kernel32.AcquireSRWLockExclusive") #pragma comment(linker, "/delayload:kernel32.TryAcquireSRWLockExclusive") +#pragma comment(linker, "/delayload:kernel32.InitializeSRWLock") //---------------------------------------------------------------------------- #if _MSC_FULL_VER >= 190024215 // VS2015sp3