Jacek Caban : user32: Use a critical section in RegisterUserApiHook.
Module: wine Branch: master Commit: 915ac1c197cbb100d2487cc337c044466d84f91a URL: https://source.winehq.org/git/wine.git/?a=commit;h=915ac1c197cbb100d2487cc33... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jun 7 23:30:46 2022 +0200 user32: Use a critical section in RegisterUserApiHook. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> --- dlls/user32/hook.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/user32/hook.c b/dlls/user32/hook.c index 357a7fdb25a..7dddfb02638 100644 --- a/dlls/user32/hook.c +++ b/dlls/user32/hook.c @@ -100,6 +100,16 @@ struct hook_info WCHAR module[MAX_PATH]; }; +static CRITICAL_SECTION api_hook_cs; +static CRITICAL_SECTION_DEBUG critsect_debug = +{ + 0, 0, &api_hook_cs, + { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": api_hook_cs") } +}; +static CRITICAL_SECTION api_hook_cs = { &critsect_debug, -1, 0, 0, 0, 0 }; + + #define WH_WINEVENT (WH_MAXHOOK+1) static const char * const hook_names[WH_WINEVENT - WH_MINHOOK + 1] = @@ -487,12 +497,12 @@ BOOL WINAPI RegisterUserApiHook(const struct user_api_hook *new_hook, struct use if (!new_hook) return FALSE; - USER_Lock(); + EnterCriticalSection( &api_hook_cs ); hooked_user_api = *new_hook; user_api = &hooked_user_api; if (old_hook) *old_hook = original_user_api; - USER_Unlock(); + LeaveCriticalSection( &api_hook_cs ); return TRUE; }
participants (1)
-
Alexandre Julliard