* Sync up to trunk r55544.
[reactos.git] / dll / win32 / credui / credui_main.c
index a6bbde6..9d09b03 100644 (file)
@@ -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;
@@ -260,7 +264,7 @@ static void CredDialogShowIncorrectPasswordBalloon(HWND hwndDlg, struct cred_dia
     SendMessageW(params->hwndBalloonTip, TTM_SETTITLEW, TTI_ERROR, (LPARAM)wszTitle);
 
     GetWindowRect(GetDlgItem(hwndDlg, IDC_PASSWORD), &rcPassword);
-    /* centred vertically and in the right side of the password edit control */
+    /* centered vertically and in the right side of the password edit control */
     x = rcPassword.right - 12;
     y = (rcPassword.top + rcPassword.bottom) / 2;
     SendMessageW(params->hwndBalloonTip, TTM_TRACKPOSITION, 0, MAKELONG(x, y));