aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise
diff options
context:
space:
mode:
authorPaul Gilbert2009-10-10 05:08:56 +0000
committerPaul Gilbert2009-10-10 05:08:56 +0000
commita4fbc73ee65db07b8bbc3a7e37bdb6cf19d63e07 (patch)
tree7a65921ce9954a5ca3a50fc1bc4469aacf527d48 /engines/cruise
parent6bbe30f44b6aab44c269fd7c7775146c8a9085ea (diff)
downloadscummvm-rg350-a4fbc73ee65db07b8bbc3a7e37bdb6cf19d63e07.tar.gz
scummvm-rg350-a4fbc73ee65db07b8bbc3a7e37bdb6cf19d63e07.tar.bz2
scummvm-rg350-a4fbc73ee65db07b8bbc3a7e37bdb6cf19d63e07.zip
Fixed memory leaks in savegame restoring
svn-id: r44863
Diffstat (limited to 'engines/cruise')
-rw-r--r--engines/cruise/cruise_main.h1
-rw-r--r--engines/cruise/saveload.cpp3
2 files changed, 4 insertions, 0 deletions
diff --git a/engines/cruise/cruise_main.h b/engines/cruise/cruise_main.h
index 0b19ce64e5..ef15b7c923 100644
--- a/engines/cruise/cruise_main.h
+++ b/engines/cruise/cruise_main.h
@@ -114,6 +114,7 @@ void closeAllMenu(void);
int removeFinishedScripts(scriptInstanceStruct *ptrHandle);
void initBigVar3(void);
void resetActorPtr(actorStruct *ptr);
+void removeAllScripts(scriptInstanceStruct *ptrHandle);
void MemoryList();
void *MemoryAlloc(uint32 size, bool clearFlag, int32 lineNum, const char *fname);
diff --git a/engines/cruise/saveload.cpp b/engines/cruise/saveload.cpp
index b2a1514ae5..fb752ce2a7 100644
--- a/engines/cruise/saveload.cpp
+++ b/engines/cruise/saveload.cpp
@@ -665,6 +665,7 @@ void initVars(void) {
resetPreload();
freeCTP();
+ freeBackgroundIncrustList(&backgroundIncrustHead);
freezeCell(&cellHead, -1, -1, -1, -1, -1, 0);
// TODO: unfreeze anims
@@ -672,6 +673,8 @@ void initVars(void) {
freeObjectList(&cellHead);
removeAnimation(&actorHead, -1, -1, -1);
+ removeAllScripts(&relHead);
+ removeAllScripts(&procHead);
changeScriptParamInList(-1, -1, &procHead, -1, 0);
removeFinishedScripts(&procHead);