aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-codegen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director/lingo/lingo-codegen.cpp')
-rw-r--r--engines/director/lingo/lingo-codegen.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 2f31f5c1d9..2ba3c0940c 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -212,7 +212,7 @@ void Lingo::cleanLocalVars() {
g_lingo->_localvars = 0;
}
-Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String *prefix, int end) {
+Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String *prefix, int end, bool removeCode) {
if (prefix)
name = *prefix + "-" + name;
@@ -244,6 +244,12 @@ Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String
sym->nargs = nargs;
sym->maxArgs = nargs;
+ // Now remove all defined code from the _currentScript
+ if (removeCode)
+ for (int i = end - 1; i >= start; i--) {
+ _currentScript->remove_at(i);
+ }
+
return sym;
}