From 6929cc65f8e9e46ce5a04f75bcf48d0d1ada2b38 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Tue, 23 Aug 2016 13:08:37 +0300 Subject: SCI32: Explicitly abord kEachElementDo when a game is being loaded This is a better check than the one in commit 3d1f1a3a21 --- engines/sci/engine/klists.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index bc559148ac..91a0484703 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -576,9 +576,10 @@ reg_t kListEachElementDo(EngineState *s, int argc, reg_t *argv) { } } else { invokeSelector(s, curObject, slc, argc, argv, argc - 2, argv + 2); - // Check if the list has been invalidated after the call above - // (e.g. when restoring in Torin) - if (s->_segMan->getSegmentType(argv[0].getSegment()) != SEG_TYPE_LISTS) + // Check if the call above leads to a game restore, in which case + // the segment manager will be reset, and the original list will + // be invalidated + if (s->abortScriptProcessing == kAbortLoadGame) return s->r_acc; } -- cgit v1.2.3