[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