fix memory leak with console

This commit is contained in:
quaK 2022-06-09 20:57:35 +03:00
parent 375ce38049
commit a4a031ad1b

View File

@ -99,6 +99,8 @@ namespace console
_RTL_CRITICAL_SECTION critSect; _RTL_CRITICAL_SECTION critSect;
} s_wcd; } s_wcd;
HBRUSH bk_brush;
HICON icon; HICON icon;
HANDLE logo; HANDLE logo;
@ -120,7 +122,7 @@ namespace console
case WM_CTLCOLORSTATIC: case WM_CTLCOLORSTATIC:
SetBkColor(reinterpret_cast<HDC>(wparam), CONSOLE_BK_COLOR); SetBkColor(reinterpret_cast<HDC>(wparam), CONSOLE_BK_COLOR);
SetTextColor(reinterpret_cast<HDC>(wparam), CONSOLE_TEXT_COLOR); SetTextColor(reinterpret_cast<HDC>(wparam), CONSOLE_TEXT_COLOR);
return reinterpret_cast<INT_PTR>(CreateSolidBrush(CONSOLE_BK_COLOR)); return reinterpret_cast<LONG_PTR>(bk_brush);
} }
return DefWindowProcA(hwnd, umsg, wparam, lparam); return DefWindowProcA(hwnd, umsg, wparam, lparam);
@ -271,7 +273,7 @@ namespace console
wndclass.lpfnWndProc = ConWndProc; wndclass.lpfnWndProc = ConWndProc;
wndclass.hInstance = hinstance; wndclass.hInstance = hinstance;
wndclass.hIcon = icon; wndclass.hIcon = icon;
wndclass.hbrBackground = CreateSolidBrush(CONSOLE_BK_COLOR); wndclass.hbrBackground = bk_brush;
wndclass.hCursor = LoadCursorA(0, IDC_ARROW); wndclass.hCursor = LoadCursorA(0, IDC_ARROW);
wndclass.lpszMenuName = nullptr; wndclass.lpszMenuName = nullptr;
wndclass.lpszClassName = class_name; wndclass.lpszClassName = class_name;
@ -469,6 +471,8 @@ namespace console
{ {
if (!console::is_enabled() || native::is_enabled()) return; if (!console::is_enabled() || native::is_enabled()) return;
syscon::bk_brush = CreateSolidBrush(CONSOLE_BK_COLOR);
const utils::nt::library self; const utils::nt::library self;
syscon::icon = LoadIconA(self.get_handle(), MAKEINTRESOURCEA(ID_ICON)); syscon::icon = LoadIconA(self.get_handle(), MAKEINTRESOURCEA(ID_ICON));
syscon::logo = LoadImageA(self.get_handle(), MAKEINTRESOURCEA(IMAGE_LOGO), 0, 0, 0, LR_COPYFROMRESOURCE); syscon::logo = LoadImageA(self.get_handle(), MAKEINTRESOURCEA(IMAGE_LOGO), 0, 0, 0, LR_COPYFROMRESOURCE);
@ -485,6 +489,8 @@ namespace console
{ {
if (!console::is_enabled() || native::is_enabled()) return; if (!console::is_enabled() || native::is_enabled()) return;
if (syscon::bk_brush) DeleteObject(syscon::bk_brush);
if (syscon::icon) DestroyIcon(syscon::icon); if (syscon::icon) DestroyIcon(syscon::icon);
if (syscon::logo) DeleteObject(syscon::logo); if (syscon::logo) DeleteObject(syscon::logo);
} }