From b36d5174067fecb87ab9c1b1881757fefbc300ae Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 22 Feb 2017 15:38:24 +0100 Subject: DIRECTOR: Lingo: Fixed stack underflow in handler execution --- engines/director/lingo/lingo-code.cpp | 4 ++-- engines/director/lingo/lingo.cpp | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'engines') diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index ca04dce550..f976434064 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -142,7 +142,7 @@ void Lingo::pushVoid() { Datum Lingo::pop(void) { if (_stack.size() == 0) - error("stack underflow"); + assert(0); Datum ret = _stack.back(); _stack.pop_back(); @@ -1126,7 +1126,7 @@ void Lingo::call(Common::String name, int nargs) { void Lingo::c_procret() { if (!g_lingo->_callstack.size()) { - warning("Call stack underflow"); + warning("c_procret: Call stack underflow"); g_lingo->_returning = true; return; } diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp index 32a247a83f..91faf68c31 100644 --- a/engines/director/lingo/lingo.cpp +++ b/engines/director/lingo/lingo.cpp @@ -303,7 +303,6 @@ void Lingo::processEvent(LEvent event, ScriptType st, int entityId) { if (_handlers.contains(ENTITY_INDEX(event, entityId))) { call(_eventHandlerTypes[event], 0); // D4+ Events - pop(); } else if (_scripts[st].contains(entityId)) { executeScript(st, entityId); // D3 list of scripts. } else { -- cgit v1.2.3