diff options
-rw-r--r-- | engines/kyra/script_eob.cpp | 6 | ||||
-rw-r--r-- | engines/kyra/script_eob.h | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/engines/kyra/script_eob.cpp b/engines/kyra/script_eob.cpp index e5f26be210..ffdb717484 100644 --- a/engines/kyra/script_eob.cpp +++ b/engines/kyra/script_eob.cpp @@ -157,10 +157,10 @@ EoBInfProcessor::~EoBInfProcessor() { delete[] _flagTable; delete[] _stack; delete[] _scriptData; - for (Common::Array<const InfOpcode *>::const_iterator a = _opcodes.begin(); a != _opcodes.end(); ++a) { - delete(*a)->proc; + + for (Common::Array<const InfOpcode *>::const_iterator a = _opcodes.begin(); a != _opcodes.end(); ++a) delete *a; - } + _opcodes.clear(); } diff --git a/engines/kyra/script_eob.h b/engines/kyra/script_eob.h index 3804db07c6..66323d6846 100644 --- a/engines/kyra/script_eob.h +++ b/engines/kyra/script_eob.h @@ -91,8 +91,10 @@ private: Screen_EoB *_screen; typedef Common::Functor1Mem<int8*, int, EoBInfProcessor> InfProc; - struct InfOpcode { + struct InfOpcode : private Common::NonCopyable { InfOpcode(InfProc *p, const char *d) : proc(p), desc(d) {} + ~InfOpcode() { delete proc; } + InfProc *proc; Common::String desc; }; |