[Scummvm-cvs-logs] SF.net SVN: scummvm: [30866] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Thu Feb 14 23:52:58 CET 2008


Revision: 30866
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30866&view=rev
Author:   dreammaster
Date:     2008-02-14 14:52:57 -0800 (Thu, 14 Feb 2008)

Log Message:
-----------
Changed error dialog display to exit ScummVM through the standard execution path rather than using the exit() method

Modified Paths:
--------------
    scummvm/trunk/engines/lure/lure.cpp
    scummvm/trunk/engines/lure/lure.h

Modified: scummvm/trunk/engines/lure/lure.cpp
===================================================================
--- scummvm/trunk/engines/lure/lure.cpp	2008-02-14 19:59:51 UTC (rev 30865)
+++ scummvm/trunk/engines/lure/lure.cpp	2008-02-14 22:52:57 UTC (rev 30866)
@@ -58,6 +58,7 @@
 
 int LureEngine::init() {
 	int_engine = this;
+	_initialised = false;
 
 	_system->beginGFXTransaction();
 	initCommonGFX(false);
@@ -67,19 +68,24 @@
 	// Check the version of the lure.dat file
 	Common::File f;
 	VersionStructure version;
-	if (!f.open(SUPPORT_FILENAME))
+	if (!f.open(SUPPORT_FILENAME)) {
 		GUIError("Could not locate Lure support file");
+		return 1;
+	}
 
 	f.seek(0xbf * 8);
 	f.read(&version, sizeof(VersionStructure));
 	f.close();
 
-	if (READ_LE_UINT16(&version.id) != 0xffff)
+	if (READ_LE_UINT16(&version.id) != 0xffff) {
 		GUIError("Error validating %s - file is invalid or out of date", SUPPORT_FILENAME);
-	else if ((version.vMajor != LURE_DAT_MAJOR) || (version.vMinor != LURE_DAT_MINOR))
+		return 1;
+	} else if ((version.vMajor != LURE_DAT_MAJOR) || (version.vMinor != LURE_DAT_MINOR)) {
 		GUIError("Incorrect version of %s file - expected %d.%d but got %d.%d",
 			SUPPORT_FILENAME, LURE_DAT_MAJOR, LURE_DAT_MINOR,
 			version.vMajor, version.vMinor);
+		return 1;
+	}
 
 	_disk = new Disk();
 	_resources = new Resources();
@@ -91,6 +97,8 @@
 	Surface::initialise();
 	_room = new Room();
 	_fights = new FightsManager();
+
+	_initialised = true;
 	return 0;
 }
 
@@ -98,17 +106,19 @@
 	// Remove all of our debug levels here
 	Common::clearAllSpecialDebugLevels();
 
-	// Delete and deinitialise subsystems
-	Surface::deinitialise();
-	delete _fights;
-	delete _room;
-	delete _menu;
-	delete _events;
-	delete _mouse;
-	delete _screen;
-	delete _strings;
-	delete _resources;
-	delete _disk;
+	if (_initialised) {
+		// Delete and deinitialise subsystems
+		Surface::deinitialise();
+		delete _fights;
+		delete _room;
+		delete _menu;
+		delete _events;
+		delete _mouse;
+		delete _screen;
+		delete _strings;
+		delete _resources;
+		delete _disk;
+	}
 }
 
 LureEngine &LureEngine::getReference() {
@@ -233,7 +243,6 @@
 	va_end(va);
 
 	Engine::GUIErrorMessage(buffer);
-	exit(1);
 }
 
 Common::String *LureEngine::detectSave(int slotNumber) {

Modified: scummvm/trunk/engines/lure/lure.h
===================================================================
--- scummvm/trunk/engines/lure/lure.h	2008-02-14 19:59:51 UTC (rev 30865)
+++ scummvm/trunk/engines/lure/lure.h	2008-02-14 22:52:57 UTC (rev 30866)
@@ -46,6 +46,7 @@
 
 class LureEngine : public Engine {
 private:
+	bool _initialised;
 	uint8 _saveVersion;
 	Disk *_disk;
 	Resources *_resources;


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