From 4d83a53e52be33845ca61fa10258fe75692c59e7 Mon Sep 17 00:00:00 2001 From: Bertrand Augereau Date: Sun, 4 Dec 2011 17:46:36 +0100 Subject: DREAMWEB: Cleaner finalization of the engine All the segments are destroyed with the VM but it won't be the case when individual buffers will be malloc'ed. --- engines/dreamweb/stubs.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'engines/dreamweb') diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index a498c905d2..b50710c10c 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -530,7 +530,7 @@ void DreamGenContext::dreamweb() { setMode(); decide(); if (quitRequested()) - return; // exit game + goto done; if (data.byte(kGetback) == 4) startNewGame = false; // savegame has been loaded @@ -544,14 +544,14 @@ void DreamGenContext::dreamweb() { titles(); if (quitRequested()) - return; // exit game + goto done; // "credits" clearPalette(); realCredits(); if (quitRequested()) - return; // exit game + goto done; clearChanges(); setMode(); @@ -579,12 +579,12 @@ void DreamGenContext::dreamweb() { while (true) { if (quitRequested()) - return; // exit game + goto done; screenUpdate(); if (quitRequested()) - return; // exit game + goto done; if (data.byte(kWongame) != 0) { // "endofgame" @@ -593,7 +593,7 @@ void DreamGenContext::dreamweb() { hangOn(200); endGame(); quickQuit2(); - return; + goto done; } if (data.byte(kMandead) == 1 || data.byte(kMandead) == 2) @@ -633,6 +633,10 @@ void DreamGenContext::dreamweb() { hangOn(100); } +done: // The engine will need some cleaner finalization, let's put it here for now + getRidOfAll(); + deallocateMem(data.word(kIcons1)); + deallocateMem(data.word(kIcons2)); } bool DreamGenContext::quitRequested() { -- cgit v1.2.3