[Scummvm-cvs-logs] SF.net SVN: scummvm:[44861] scummvm/trunk/engines/cruise

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sat Oct 10 06:15:38 CEST 2009


Revision: 44861
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44861&view=rev
Author:   dreammaster
Date:     2009-10-10 04:15:38 +0000 (Sat, 10 Oct 2009)

Log Message:
-----------
Further memory leak fixes

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/cruise_main.cpp
    scummvm/trunk/engines/cruise/dataLoader.cpp
    scummvm/trunk/engines/cruise/function.cpp
    scummvm/trunk/engines/cruise/overlay.cpp
    scummvm/trunk/engines/cruise/sound.cpp

Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp	2009-10-10 02:16:23 UTC (rev 44860)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp	2009-10-10 04:15:38 UTC (rev 44861)
@@ -211,6 +211,17 @@
 }
 
 void resetActorPtr(actorStruct *ptr) {
+	actorStruct *p = ptr;
+
+	if (p->next) {
+		p = p->next;
+		do {
+			actorStruct *pNext = p->next;
+			MemFree(p);
+			p = pNext;
+		} while (p);
+	}
+
 	ptr->next = NULL;
 	ptr->prev = NULL;
 }
@@ -1983,6 +1994,7 @@
 	// Free data
 	removeAllScripts(&relHead);
 	removeAllScripts(&procHead);
+	resetActorPtr(&actorHead);
 	freeOverlayTable();
 	closeCnf();
 	closeBase();

Modified: scummvm/trunk/engines/cruise/dataLoader.cpp
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.cpp	2009-10-10 02:16:23 UTC (rev 44860)
+++ scummvm/trunk/engines/cruise/dataLoader.cpp	2009-10-10 04:15:38 UTC (rev 44861)
@@ -307,6 +307,8 @@
 		error("Unknown fileType in loadFileRange");
 	}
 
+	MemFree(ptr);
+
 	return 0;
 }
 

Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp	2009-10-10 02:16:23 UTC (rev 44860)
+++ scummvm/trunk/engines/cruise/function.cpp	2009-10-10 04:15:38 UTC (rev 44861)
@@ -276,7 +276,8 @@
 		cellStruct *pNext = pCurrent->next;
 
 		if (pCurrent->freeze == 0) {
-			MemFree(pCurrent->gfxPtr);
+			if (pCurrent->gfxPtr)
+				freeGfx(pCurrent->gfxPtr);
 			MemFree(pCurrent);
 		}
 

Modified: scummvm/trunk/engines/cruise/overlay.cpp
===================================================================
--- scummvm/trunk/engines/cruise/overlay.cpp	2009-10-10 02:16:23 UTC (rev 44860)
+++ scummvm/trunk/engines/cruise/overlay.cpp	2009-10-10 04:15:38 UTC (rev 44861)
@@ -113,6 +113,8 @@
 	MemFree(ovlDataPtr->arrayStates);
 	MemFree(ovlDataPtr->nameVerbGlob);
 	MemFree(ovlDataPtr->arrayNameObj);
+	MemFree(ovlDataPtr->arrayRelocGlob);
+	MemFree(ovlDataPtr->arrayNameRelocGlob);
 	
 	MemFree(ovlDataPtr);
 	overlayTable[overlayIdx].ovlData = NULL;

Modified: scummvm/trunk/engines/cruise/sound.cpp
===================================================================
--- scummvm/trunk/engines/cruise/sound.cpp	2009-10-10 02:16:23 UTC (rev 44860)
+++ scummvm/trunk/engines/cruise/sound.cpp	2009-10-10 04:15:38 UTC (rev 44861)
@@ -601,9 +601,7 @@
 
 PCSoundFxPlayer::~PCSoundFxPlayer() {
 	_driver->setUpdateCallback(NULL, NULL);
-	if (_playing) {
-		stop();
-	}
+	stop();
 }
 
 bool PCSoundFxPlayer::load(const char *song) {
@@ -674,8 +672,8 @@
 			_driver->stopChannel(i);
 		}
 		_driver->stopAll();
-		unload();
 	}
+	unload();
 }
 
 void PCSoundFxPlayer::fadeOut() {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list