aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/parallaction/animation.cpp8
-rw-r--r--engines/parallaction/zone.h3
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;