From 8ce78a7b3e5af41ca434c00b119947278fce3378 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Wed, 16 Nov 2011 16:30:18 +0100 Subject: [PATCH] credui: Delete the static critical section when unloading the dll. --- dlls/credui/credui_main.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dlls/credui/credui_main.c b/dlls/credui/credui_main.c index dd55ac06480..9d09b03cf5c 100644 --- a/dlls/credui/credui_main.c +++ b/dlls/credui/credui_main.c @@ -65,19 +65,21 @@ static CRITICAL_SECTION csPendingCredentials = { &critsect_debug, -1, 0, 0, 0, 0 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { + struct pending_credentials *entry, *cursor2; TRACE("(0x%p, %d, %p)\n",hinstDLL,fdwReason,lpvReserved); - if (fdwReason == DLL_WINE_PREATTACH) return FALSE; /* prefer native version */ - - if (fdwReason == DLL_PROCESS_ATTACH) + switch (fdwReason) { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + + case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinstDLL); hinstCredUI = hinstDLL; InitCommonControls(); - } - else if (fdwReason == DLL_PROCESS_DETACH) - { - struct pending_credentials *entry, *cursor2; + break; + + case DLL_PROCESS_DETACH: LIST_FOR_EACH_ENTRY_SAFE(entry, cursor2, &pending_credentials_list, struct pending_credentials, entry) { list_remove(&entry->entry); @@ -88,6 +90,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) HeapFree(GetProcessHeap(), 0, entry->pszPassword); HeapFree(GetProcessHeap(), 0, entry); } + DeleteCriticalSection(&csPendingCredentials); + break; } return TRUE;