[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