[MSGINA] gui: Improve 'DlgData_Destroy()'
authorSerge Gautherie <reactos-git_serge_171003@gautherie.fr>
Tue, 31 Mar 2020 07:39:16 +0000 (09:39 +0200)
committerMark Jansen <mark.jansen@reactos.org>
Fri, 10 Jul 2020 23:44:26 +0000 (01:44 +0200)
Addendum to 623dd26ccea5e79001aee769c230fb4f8e304fc8.

dll/win32/msgina/gui.c

index 3cb30bb..106a4eb 100644 (file)
@@ -86,14 +86,29 @@ DlgData_LoadBitmaps(_Inout_ PDLG_DATA pDlgData)
     }
 }
 
-static void
-DlgData_Destroy(PDLG_DATA pDlgData)
+static VOID
+DlgData_Destroy(_Inout_ HWND hwndDlg)
 {
+    PDLG_DATA pDlgData;
+
+    pDlgData = (PDLG_DATA)GetWindowLongPtrW(hwndDlg, GWLP_USERDATA);
     if (!pDlgData)
+    {
         return;
+    }
+
+    SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (LONG_PTR)NULL);
+
+    if (pDlgData->hBarBitmap)
+    {
+        DeleteObject(pDlgData->hBarBitmap);
+    }
+
+    if (pDlgData->hLogoBitmap)
+    {
+        DeleteObject(pDlgData->hLogoBitmap);
+    }
 
-    DeleteObject(pDlgData->hLogoBitmap);
-    DeleteObject(pDlgData->hBarBitmap);
     HeapFree(GetProcessHeap(), 0, pDlgData);
 }
 
@@ -264,7 +279,7 @@ StatusDialogProc(
             {
                 KillTimer(hwndDlg, IDT_BAR);
             }
-            DlgData_Destroy(pDlgData);
+            DlgData_Destroy(hwndDlg);
             return TRUE;
         }
     }
@@ -434,7 +449,7 @@ WelcomeDialogProc(
         }
         case WM_DESTROY:
         {
-            DlgData_Destroy(pDlgData);
+            DlgData_Destroy(hwndDlg);
             return TRUE;
         }
     }
@@ -1230,7 +1245,7 @@ LogonDialogProc(
         }
 
         case WM_DESTROY:
-            DlgData_Destroy(pDlgData);
+            DlgData_Destroy(hwndDlg);
             return TRUE;
 
         case WM_COMMAND:
@@ -1489,7 +1504,7 @@ UnlockDialogProc(
             return TRUE;
         }
         case WM_DESTROY:
-            DlgData_Destroy(pDlgData);
+            DlgData_Destroy(hwndDlg);
             return TRUE;
 
         case WM_COMMAND:
@@ -1577,7 +1592,7 @@ LockedDialogProc(
         }
         case WM_DESTROY:
         {
-            DlgData_Destroy(pDlgData);
+            DlgData_Destroy(hwndDlg);
             return TRUE;
         }
     }