diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index cb5a5cc1ca8..6f7ca917c33 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -192,23 +192,23 @@ void Lingo::pushVoid() { push(d); } -Datum Lingo::pop(void) { +Datum Lingo::pop(bool eval) { assert (_stack.size() != 0); Datum ret = _stack.back(); _stack.pop_back(); - if (ret.lazy) { + if (eval && ret.lazy) { ret = ret.eval(); } return ret; } -Datum Lingo::peek(uint offset) { +Datum Lingo::peek(uint offset, bool eval) { assert (_stack.size() > offset); Datum ret = _stack[_stack.size() - 1 - offset]; - if (ret.lazy) { + if (eval && ret.lazy) { ret = ret.eval(); } return ret; diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 8af8bebcfa1..8462a815859 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -437,8 +437,8 @@ private: public: void push(Datum d); - Datum pop(void); - Datum peek(uint offset); + Datum pop(bool eval = true); + Datum peek(uint offset, bool eval = true); public: Common::HashMap _eventHandlerTypes;