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

dreammaster dreammaster at scummvm.org
Sat May 1 03:35:49 UTC 2021


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

Summary:
e22a8657ac AGS: Fix crash exiting Mage's Initiation


Commit: e22a8657ac1a9b3984398639dda6e31afcd30361
    https://github.com/scummvm/scummvm/commit/e22a8657ac1a9b3984398639dda6e31afcd30361
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-04-30T20:35:09-07:00

Commit Message:
AGS: Fix crash exiting Mage's Initiation

Changed paths:
    engines/ags/engine/ac/event.cpp
    engines/ags/engine/main/game_run.cpp
    engines/ags/engine/script/script.cpp


diff --git a/engines/ags/engine/ac/event.cpp b/engines/ags/engine/ac/event.cpp
index 6767945847..3972398dea 100644
--- a/engines/ags/engine/ac/event.cpp
+++ b/engines/ags/engine/ac/event.cpp
@@ -60,6 +60,8 @@ int run_claimable_event(const char *tsname, bool includeRoom, int numParams, con
 
 	if (includeRoom && _G(roominst)) {
 		toret = RunScriptFunctionIfExists(_G(roominst), tsname, numParams, params);
+		if (_G(abort_engine))
+			return -1;
 
 		if (_G(eventClaimed) == EVENT_CLAIMED) {
 			_G(eventClaimed) = eventClaimedOldValue;
diff --git a/engines/ags/engine/main/game_run.cpp b/engines/ags/engine/main/game_run.cpp
index 0197789696..2ff0545005 100644
--- a/engines/ags/engine/main/game_run.cpp
+++ b/engines/ags/engine/main/game_run.cpp
@@ -553,6 +553,10 @@ static void game_loop_check_controls(bool checkControls) {
 		int numevents_was = _G(numevents);
 		check_controls();
 		check_room_edges(numevents_was);
+
+		if (_G(abort_engine))
+			return;
+
 		// If an inventory interaction changed the room
 		if (inRoom != _G(displayed_room))
 			check_new_room();
diff --git a/engines/ags/engine/script/script.cpp b/engines/ags/engine/script/script.cpp
index 2977fdd0e6..0dd9866990 100644
--- a/engines/ags/engine/script/script.cpp
+++ b/engines/ags/engine/script/script.cpp
@@ -310,6 +310,8 @@ int PrepareTextScript(ccInstance *sci, const char **tsname) {
 		_G(ccErrorString) = "script is already in execution";
 		return -3;
 	}
+
+	assert(_G(num_scripts) < MAX_SCRIPT_AT_ONCE);
 	_G(scripts)[_G(num_scripts)].init();
 	_G(scripts)[_G(num_scripts)].inst = sci;
 	// CHECKME: this conditional block will never run, because
@@ -433,7 +435,7 @@ int RunTextScript2IParam(ccInstance *sci, const char *tsname, const RuntimeScrip
 		bool eventWasClaimed;
 		int toret = run_claimable_event(tsname, true, 2, params, &eventWasClaimed);
 
-		if (eventWasClaimed)
+		if (eventWasClaimed || _G(abort_engine))
 			return toret;
 	}
 




More information about the Scummvm-git-logs mailing list