[Scummvm-cvs-logs] SF.net SVN: scummvm:[47750] scummvm/trunk/engines/gob/resources.cpp

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Sun Jan 31 14:18:32 CET 2010


Revision: 47750
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47750&view=rev
Author:   drmccoy
Date:     2010-01-31 13:18:32 +0000 (Sun, 31 Jan 2010)

Log Message:
-----------
Properly deleting the TOT resource table again when loading failed

Modified Paths:
--------------
    scummvm/trunk/engines/gob/resources.cpp

Modified: scummvm/trunk/engines/gob/resources.cpp
===================================================================
--- scummvm/trunk/engines/gob/resources.cpp	2010-01-31 13:05:46 UTC (rev 47749)
+++ scummvm/trunk/engines/gob/resources.cpp	2010-01-31 13:18:32 UTC (rev 47750)
@@ -159,6 +159,16 @@
 	bool hasTOTRes = loadTOTResourceTable();
 	bool hasEXTRes = loadEXTResourceTable();
 
+	if (!hasTOTRes) {
+		delete _totResourceTable;
+		_totResourceTable = 0;
+	}
+
+	if (!hasEXTRes) {
+		delete _extResourceTable;
+		_extResourceTable = 0;
+	}
+
 	if (!hasTOTRes && !hasEXTRes)
 		return false;
 
@@ -610,9 +620,10 @@
 }
 
 Resource *Resources::getTOTResource(uint16 id) const {
-	if (id >= _totResourceTable->itemsCount) {
+	if (!_totResourceTable || (id >= _totResourceTable->itemsCount)) {
 		warning("Trying to load non-existent TOT resource (%s, %d/%d)",
-				_totFile.c_str(), id, _totResourceTable->itemsCount - 1);
+				_totFile.c_str(), id,
+				_totResourceTable ? (_totResourceTable->itemsCount - 1) : -1);
 		return 0;
 	}
 
@@ -643,7 +654,7 @@
 		return 0;
 	}
 
-	assert(_totResourceTable->items);
+	assert(_extResourceTable->items);
 
 	EXTResourceItem &extItem = _extResourceTable->items[id];
 


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