From d6c44112073a23525501cf4435a94a0c39a7996d Mon Sep 17 00:00:00 2001 From: Serge Gautherie Date: Tue, 31 Mar 2020 09:39:16 +0200 Subject: [PATCH] [MSGINA] gui: Improve 'DlgData_Destroy()' Addendum to 623dd26ccea5e79001aee769c230fb4f8e304fc8. --- dll/win32/msgina/gui.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/dll/win32/msgina/gui.c b/dll/win32/msgina/gui.c index 3cb30bb638f..106a4ebcb96 100644 --- a/dll/win32/msgina/gui.c +++ b/dll/win32/msgina/gui.c @@ -86,14 +86,29 @@ DlgData_LoadBitmaps(_Inout_ PDLG_DATA pDlgData) } } -static void -DlgData_Destroy(PDLG_DATA pDlgData) +static VOID +DlgData_Destroy(_Inout_ HWND hwndDlg) { - if (!pDlgData) - return; + 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; } }