From 05c748efa3d42ffb3bfe64770837efd24a9fa29c Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 15 Nov 2011 20:59:03 +0100 Subject: DREAMWEB: Fix crash on quit The functions 'mainscreen' and 'screenupdate' can set kQuitrequested, so we have to check that from their callers. --- devtools/tasmrecover/dreamweb/dreamweb.asm | 2 ++ engines/dreamweb/dreamgen.cpp | 3 +++ engines/dreamweb/stubs.cpp | 3 +++ 3 files changed, 8 insertions(+) diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm index 8a52435b0c..d8a728c382 100644 --- a/devtools/tasmrecover/dreamweb/dreamweb.asm +++ b/devtools/tasmrecover/dreamweb/dreamweb.asm @@ -1129,6 +1129,8 @@ Screenupdate proc near call newplace call mainscreen + cmp quitrequested, 0 + jnz finishearly call animpointer call showpointer cmp watchingtime,0 diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 6643ab0204..ba315f2051 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -13491,6 +13491,9 @@ void DreamGenContext::screenupdate() { STACK_CHECK; newplace(); mainscreen(); + _cmp(data.byte(kQuitrequested), 0); + if (!flags.z()) + return /* (finishearly) */; animpointer(); showpointer(); _cmp(data.word(kWatchingtime), 0); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 97d0f08555..798772168c 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -140,6 +140,9 @@ void DreamGenContext::dreamweb() { screenupdate(); + if (data.byte(kQuitrequested)) + return; // exit game + if (data.byte(kWongame) != 0) { // "endofgame" clearbeforeload(); -- cgit v1.2.3