[Scummvm-git-logs] scummvm master -> 27b967866af859f32ba496f9241d6fa6e361b1a5

dreammaster noreply at scummvm.org
Sun Sep 28 21:44:11 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
27b967866a BAGEL: MFC: Fix crash closing backpack log


Commit: 27b967866af859f32ba496f9241d6fa6e361b1a5
    https://github.com/scummvm/scummvm/commit/27b967866af859f32ba496f9241d6fa6e361b1a5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-09-28T14:44:04-07:00

Commit Message:
BAGEL: MFC: Fix crash closing backpack log

Changed paths:
    engines/bagel/mfc/libs/event_loop.cpp
    engines/bagel/mfc/libs/event_loop.h


diff --git a/engines/bagel/mfc/libs/event_loop.cpp b/engines/bagel/mfc/libs/event_loop.cpp
index 02211268edf..8a082afd2b6 100644
--- a/engines/bagel/mfc/libs/event_loop.cpp
+++ b/engines/bagel/mfc/libs/event_loop.cpp
@@ -191,8 +191,8 @@ bool EventLoop::GetMessage(MSG &msg) {
 
 		if (msg.hwnd) {
 			if ((msg.message == WM_KEYDOWN || msg.message == WM_KEYUP) &&
-					_kbdHookProc) {
-				if (_kbdHookProc(HC_ACTION, msg.wParam, msg.lParam))
+					!_kbdHookProc.empty()) {
+				if (_kbdHookProc.front()(HC_ACTION, msg.wParam, msg.lParam))
 					msg.message = WM_NULL;
 			}
 		} else if (msg.message != WM_QUIT) {
diff --git a/engines/bagel/mfc/libs/event_loop.h b/engines/bagel/mfc/libs/event_loop.h
index 16f8ae1382e..a58f1fb700b 100644
--- a/engines/bagel/mfc/libs/event_loop.h
+++ b/engines/bagel/mfc/libs/event_loop.h
@@ -98,7 +98,7 @@ private:
 	Common::Point _joystickPos = { JOYSTICK_REST_POS, JOYSTICK_REST_POS };
 	Common::Point _mousePos;
 	uint _joystickButtons = 0;
-	HOOKPROC _kbdHookProc = nullptr;
+	Array<HOOKPROC> _kbdHookProc;
 	int _idleCtr = 0;
 	KeybindProc _keybindProc = nullptr;
 	FocusChangeProc _focusChangeProc = nullptr;
@@ -246,12 +246,12 @@ public:
 	MMRESULT joyReleaseCapture(unsigned int uJoyID);
 
 	HHOOK HookKeyboard(HOOKPROC proc) {
-		_kbdHookProc = proc;
+		_kbdHookProc.push_back(proc);
 		return (HHOOK)proc;
 	}
 	void UnhookKeyboard(HHOOK hook) {
-		assert(_kbdHookProc && hook == (HHOOK)_kbdHookProc);
-		_kbdHookProc = nullptr;
+		assert(_kbdHookProc.contains((HOOKPROC)hook));
+		_kbdHookProc.remove((HOOKPROC)hook);
 	}
 
 	uintptr SetTimer(HWND hWnd, uintptr nIDEvent, unsigned int nElapse,




More information about the Scummvm-git-logs mailing list