diff options
Diffstat (limited to 'engines/sludge/variable.cpp')
-rw-r--r-- | engines/sludge/variable.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp index 9cbb9f49f8..5537377869 100644 --- a/engines/sludge/variable.cpp +++ b/engines/sludge/variable.cpp @@ -65,7 +65,10 @@ void unlinkVar(Variable &thisVar) { break; case SVT_ANIM: - deleteAnim(thisVar.varData.animHandler); + if (thisVar.varData.animHandler) { + delete thisVar.varData.animHandler; + thisVar.varData.animHandler = nullptr; + } break; default: @@ -85,12 +88,12 @@ void newAnimationVariable(Variable &thisVar, PersonaAnimation *i) { thisVar.varData.animHandler = i; } -PersonaAnimation *getAnimationFromVar(Variable &thisVar) { +PersonaAnimation *getAnimationFromVar(Variable &thisVar) { if (thisVar.varType == SVT_ANIM) - return copyAnim(thisVar.varData.animHandler); + return new PersonaAnimation(thisVar.varData.animHandler); if (thisVar.varType == SVT_INT && thisVar.varData.intValue == 0) - return makeNullAnim(); + return new PersonaAnimation(); fatal("Expecting an animation variable; found Variable of type", typeName[thisVar.varType]); return NULL; @@ -116,7 +119,7 @@ Persona *getCostumeFromVar(Variable &thisVar) { return NULL; for (int iii = 0; iii < 3; iii++) - p->animation[iii] = copyAnim(thisVar.varData.animHandler); + p->animation[iii] = new PersonaAnimation(thisVar.varData.animHandler); break; @@ -370,7 +373,7 @@ bool copyMain(const Variable &from, Variable &to) { return true; case SVT_ANIM: - to.varData.animHandler = copyAnim(from.varData.animHandler); + to.varData.animHandler = new PersonaAnimation(from.varData.animHandler); return true; case SVT_NULL: |