[Scummvm-cvs-logs] SF.net SVN: scummvm:[54124] scummvm/trunk/engines/hugo

strangerke at users.sourceforge.net strangerke at users.sourceforge.net
Sun Nov 7 19:52:48 CET 2010


Revision: 54124
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54124&view=rev
Author:   strangerke
Date:     2010-11-07 18:52:47 +0000 (Sun, 07 Nov 2010)

Log Message:
-----------
HUGO: Fix crash when hugo.dat is not the expected version

Modified Paths:
--------------
    scummvm/trunk/engines/hugo/hugo.cpp
    scummvm/trunk/engines/hugo/object.cpp
    scummvm/trunk/engines/hugo/schedule.cpp

Modified: scummvm/trunk/engines/hugo/hugo.cpp
===================================================================
--- scummvm/trunk/engines/hugo/hugo.cpp	2010-11-07 17:18:59 UTC (rev 54123)
+++ scummvm/trunk/engines/hugo/hugo.cpp	2010-11-07 18:52:47 UTC (rev 54124)
@@ -86,13 +86,17 @@
 	free(_textData);
 	free(_stringtData);
 
-	for (int i = 0; _arrayNouns[i]; i++)
-		free(_arrayNouns[i]);
-	free(_arrayNouns);
+	if (_arrayNouns) {
+		for (int i = 0; _arrayNouns[i]; i++)
+			free(_arrayNouns[i]);
+		free(_arrayNouns);
+	}
 
-	for (int i = 0; _arrayVerbs[i]; i++)
-		free(_arrayVerbs[i]);
-	free(_arrayVerbs);
+	if (_arrayVerbs) {
+		for (int i = 0; _arrayVerbs[i]; i++)
+			free(_arrayVerbs[i]);
+		free(_arrayVerbs);
+	}
 
 	free(_screenNames);
 	_screen->freePalette();
@@ -108,25 +112,33 @@
 	free(_hotspots);
 	free(_invent);
 
-	for (int i = 0; i < _usesSize; i++)
-		free(_uses[i].targets);
-	free(_uses);
+	if (_uses) {
+		for (int i = 0; i < _usesSize; i++)
+			free(_uses[i].targets);
+		free(_uses);
+	}
 
 	free(_catchallList);
 
-	for (int i = 0; i < _backgroundObjectsSize; i++)
-		free(_backgroundObjects[i]);
-	free(_backgroundObjects);
+	if (_backgroundObjects) {
+		for (int i = 0; i < _backgroundObjectsSize; i++)
+			free(_backgroundObjects[i]);
+		free(_backgroundObjects);
+	}
 
 	free(_points);
 
-	for (int i = 0; i < _cmdListSize; i++)
-		free(_cmdList[i]);
-	free(_cmdList);
+	if (_cmdList) {
+		for (int i = 0; i < _cmdListSize; i++)
+			free(_cmdList[i]);
+		free(_cmdList);
+	}
 
-	for (int i = 0; i < _screenActsSize; i++)
-		free(_screenActs[i]);
-	free(_screenActs);
+	if (_cmdList) {
+		for (int i = 0; i < _screenActsSize; i++)
+			free(_screenActs[i]);
+		free(_screenActs);
+	}
 
 	_object->freeObjectArr();
 	_scheduler->freeActListArr();

Modified: scummvm/trunk/engines/hugo/object.cpp
===================================================================
--- scummvm/trunk/engines/hugo/object.cpp	2010-11-07 17:18:59 UTC (rev 54123)
+++ scummvm/trunk/engines/hugo/object.cpp	2010-11-07 18:52:47 UTC (rev 54124)
@@ -46,7 +46,7 @@
 
 namespace Hugo {
 
-ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm) {
+ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm), _objects(0) {
 }
 
 ObjectHandler::~ObjectHandler() {

Modified: scummvm/trunk/engines/hugo/schedule.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule.cpp	2010-11-07 17:18:59 UTC (rev 54123)
+++ scummvm/trunk/engines/hugo/schedule.cpp	2010-11-07 18:52:47 UTC (rev 54124)
@@ -42,7 +42,7 @@
 
 namespace Hugo {
 
-Scheduler::Scheduler(HugoEngine *vm) : _vm(vm) {
+Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0) {
 }
 
 Scheduler::~Scheduler() {
@@ -829,9 +829,11 @@
 void Scheduler::freeActListArr() {
 	debugC(6, kDebugSchedule, "freeActListArr()");
 
-	for (int i = 0; i < _actListArrSize; i++)
-		free(_actListArr[i]);
-	free(_actListArr);
+	if (_actListArr) {
+		for (int i = 0; i < _actListArrSize; i++)
+			free(_actListArr[i]);
+		free(_actListArr);
+	}
 }
 
 /**


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