[Scummvm-git-logs] scummvm master -> d7fbcab406752b360bd3a5f28f38832164be08e0

dreammaster noreply at scummvm.org
Thu Oct 15 07:11:05 UTC 2026


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:
d7fbcab406 LURE: Fix NPC action stack overflow at blocked exit


Commit: d7fbcab406752b360bd3a5f28f38832164be08e0
    https://github.com/scummvm/scummvm/commit/d7fbcab406752b360bd3a5f28f38832164be08e0
Author: Akshat (akshatgupta099 at gmail.com)
Date: 2026-10-14T21:11:00-10:00

Commit Message:
LURE: Fix NPC action stack overflow at blocked exit

Only add the handler if it isn't already active.

Fixes #17095

Assisted-by: Claude:claude-opus-5-5

Changed paths:
    engines/lure/hotspots.cpp


diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp
index 93b2706dea8..989d9a5af0d 100644
--- a/engines/lure/hotspots.cpp
+++ b/engines/lure/hotspots.cpp
@@ -4770,10 +4770,13 @@ void Support::characterChangeRoom(Hotspot &h, uint16 roomNumber,
 		newY = (newY - h.heightCopy()) & 0xfff8;
 
 		if (checkForIntersectingCharacter(h, newX, newY, roomNumber)) {
-			// Character is blocked, so add a handler for handling it
+			// Character is blocked, so add a handler for handling it, unless one is already active
 			uint16 dataId = res.getCharOffset(0);
 			CharacterScheduleEntry *entry = res.charSchedules().getEntry(dataId);
-			h.currentActions().addFront(DISPATCH_ACTION, entry, h.roomNumber());
+			CurrentActionStack &actions = h.currentActions();
+			if (actions.isEmpty() || !actions.top().hasSupportData() ||
+				(actions.top().supportData().parent() != entry->parent()))
+				actions.addFront(DISPATCH_ACTION, entry, h.roomNumber());
 		} else {
 			// Handle character room change
 			h.setRoomNumber(roomNumber);




More information about the Scummvm-git-logs mailing list