From 40245fe4504ecc7cb26ccfc5b5c7d5d2b15cbbe7 Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Fri, 6 Apr 2007 18:29:55 +0000 Subject: Made Program hold an explicit reference to its set of Instruction(s) instead of simply being a Node chained with them. svn-id: r26393 --- engines/parallaction/animation.cpp | 8 ++++---- engines/parallaction/zone.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/engines/parallaction/animation.cpp b/engines/parallaction/animation.cpp index b74ce0bebd..7102aa8136 100644 --- a/engines/parallaction/animation.cpp +++ b/engines/parallaction/animation.cpp @@ -157,7 +157,7 @@ void Parallaction::freeScript(Program *program) { if (!program) return; delete[] program->_locals; - freeNodeList(program); + freeNodeList(&program->_start); return; } @@ -261,7 +261,7 @@ void Parallaction::loadProgram(Animation *a, char *filename) { a->_program = new Program; a->_program->_locals = new LocalVariable[10]; - Node *vD0 = a->_program; + Node *vD0 = &a->_program->_start; Instruction *vCC = new Instruction; @@ -280,7 +280,7 @@ void Parallaction::loadProgram(Animation *a, char *filename) { delete script; - a->_program->_ip = (Instruction*)a->_program->_next; + a->_program->_ip = (Instruction*)a->_program->_start._next; return; } @@ -588,7 +588,7 @@ void jobRunScripts(void *parm, Job *j) { a->_flags &= ~kFlagsActing; _vm->runCommands(a->_commands, a); } - a->_program->_ip = (Instruction*)a->_program->_next; + a->_program->_ip = (Instruction*)a->_program->_start._next; goto label1; diff --git a/engines/parallaction/zone.h b/engines/parallaction/zone.h index 8d61dedf9e..8d33963951 100644 --- a/engines/parallaction/zone.h +++ b/engines/parallaction/zone.h @@ -279,11 +279,12 @@ struct Instruction : public Node { }; -struct Program : public Node { +struct Program { LocalVariable *_locals; uint16 _loopCounter; Instruction *_ip; Instruction *_loopStart; + Instruction _start; Program() { _locals = NULL; -- cgit v1.2.3