diff options
Diffstat (limited to 'engines/parallaction/location.cpp')
-rw-r--r-- | engines/parallaction/location.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/engines/parallaction/location.cpp b/engines/parallaction/location.cpp index 4e9bf11bf3..e437b606e0 100644 --- a/engines/parallaction/location.cpp +++ b/engines/parallaction/location.cpp @@ -36,6 +36,7 @@ void switchBackground(char *name); void parseWalkNodes(ArchivedFile *file, Node *list); void freeAnimations(); +Node helperNode = { NULL, NULL }; void Parallaction::parseLocation(const char *filename) { // printf("parseLocation(%s)", filename); @@ -217,15 +218,17 @@ void freeLocation() { _locationWalkNodes._next = NULL; debugC(7, kDebugLocation, "freeLocation: walk nodes freed"); + helperNode._prev = helperNode._next = NULL; freeZones(_zones._next); freeNodeList(_zones._next); - memset(&_zones, 0, sizeof(Node)); + memcpy(&_zones, &helperNode, sizeof(Node)); debugC(7, kDebugLocation, "freeLocation: zones freed"); + helperNode._prev = helperNode._next = NULL; freeZones(_animations._next); freeAnimations(); freeNodeList(_animations._next); - memset(&_animations, 0, sizeof(Node)); + memcpy(&_animations, &helperNode, sizeof(Node)); debugC(7, kDebugLocation, "freeLocation: animations freed"); if (_locationComment) { |