From 6ca9b8f91de8e8bc3d53e92be2f8ec9e38db96e0 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 23 Apr 2008 18:57:21 +0000 Subject: - Fixed possible memory leak. - Corrected processNewShape implementation. svn-id: r31671 --- engines/kyra/kyra_v2.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'engines/kyra/kyra_v2.cpp') diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index 4ee81eb070..93dfc73109 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -1255,7 +1255,7 @@ void KyraEngine_v2::runTemporaryScript(const char *filename, int unk1, int unk2, memset(&_temporaryScriptState, 0, sizeof(_temporaryScriptState)); if (!_scriptInterpreter->loadScript(filename, &_temporaryScriptData, &_opcodesTemporary)) - error("couldn't load temporary script '%s'", filename); + error("Couldn't load temporary script '%s'", filename); _scriptInterpreter->initScript(&_temporaryScriptState, &_temporaryScriptData); _scriptInterpreter->startScript(&_temporaryScriptState, 0); @@ -1274,8 +1274,10 @@ void KyraEngine_v2::runTemporaryScript(const char *filename, int unk1, int unk2, fileData = _newShapeFiledata; - if (!fileData) + if (!fileData) { + _scriptInterpreter->unloadScript(&_temporaryScriptData); return; + } if (newShapes) _newShapeCount = initNewShapes(fileData); @@ -1658,9 +1660,7 @@ void KyraEngine_v2::processNewShapes(int unk1, int unk2) { uint32 delayEnd = _system->getMillis() + _newShapeDelay * _tickLength; - while (!skipFlag() && _system->getMillis() < delayEnd) { - // XXX skipFlag handling, unk1 seems to make a scene not skipable - + while ((!skipFlag() || unk1) && _system->getMillis() < delayEnd) { if (_chatText) updateWithText(); else @@ -1668,6 +1668,9 @@ void KyraEngine_v2::processNewShapes(int unk1, int unk2) { delay(10); } + + if (skipFlag()) + resetSkipFlag(); } if (unk2) { -- cgit v1.2.3