[Scummvm-cvs-logs] CVS: scummvm/scumm script_v8.cpp,2.249,2.250 script_v5.cpp,1.238,1.239 dialogs.cpp,1.111,1.112

Max Horn fingolfin at users.sourceforge.net
Fri Jun 25 15:14:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9054/scumm

Modified Files:
	script_v8.cpp script_v5.cpp dialogs.cpp 
Log Message:
Use auto_ptr to avoid leaks

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.249
retrieving revision 2.250
diff -u -d -r2.249 -r2.250
--- script_v8.cpp	21 Jun 2004 02:33:23 -0000	2.249
+++ script_v8.cpp	25 Jun 2004 22:12:57 -0000	2.250
@@ -34,6 +34,7 @@
 #include "scumm/smush/smush_player.h"
 #include "sound/mixer.h"
 
+#include <memory>
 
 namespace Scumm {
 
@@ -1322,7 +1323,7 @@
 		warning("o8_kernelSetFunctions: clearTextQueue()");
 		break;
 	case 25: {	// saveGameReadName
-		SaveFileManager *mgr = _system->get_savefile_manager();
+		const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
 		char *address = (char*)getStringAddress(args[2]);
 		char name[30];
 
@@ -1330,13 +1331,14 @@
 			warning("o8_kernelSetFunctions: saveGameReadName failed finding slot string %d", args[2]);
 			break;
 		}
-		getSavegameName(args[1] - 1, name, mgr);
+		getSavegameName(args[1] - 1, name, mgr.get());
 		if (strlen(name) > 0 && strlen(name) < 30)
 			strcpy(address, name);
 		break;
 	}
 	case 26: {	// saveGame?
-		//SaveFileManager *mgr = _system->get_savefile_manager();
+		//const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 		//char *address = (char*)getStringAddress(args[2]);
 		char address[30];
 		warning("o8_kernelSetFunctions: saveGame?(%d, %s)", args[1], address);

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.238
retrieving revision 1.239
diff -u -d -r1.238 -r1.239
--- script_v5.cpp	2 May 2004 14:39:48 -0000	1.238
+++ script_v5.cpp	25 Jun 2004 22:12:57 -0000	1.239
@@ -29,6 +29,8 @@
 #include "scumm/sound.h"
 #include "scumm/verbs.h"
 
+#include <memory>
+
 namespace Scumm {
 
 #define OPCODE(x)	{ &ScummEngine_v5::x, #x }
@@ -1172,8 +1174,9 @@
 	case 0xC0: // test if save exists
 		bool avail_saves[100];
 		char filename[256];
-		SaveFileManager *mgr = _system->get_savefile_manager();
-		listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr);
+		const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
+		listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr.get());
 		makeSavegameName(filename, slot, false);
 		if (avail_saves[slot] && (mgr->open_savefile(filename, getSavePath(), false)))
 			result = 6; // save file exists
@@ -1938,7 +1941,8 @@
 			s = filename;
 			while ((*s++ = fetchScriptByte()));
 
-			SaveFileManager *mgr = _system->get_savefile_manager();
+			const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 			file = mgr->open_savefile(filename, getSavePath(), true);
 			if (file != NULL) {
 				byte *ptr;
@@ -1946,7 +1950,6 @@
 				file->write(ptr, resStrLen(ptr) + 1);
 				delete file;
 			}
-			delete mgr;
 			break;
 		}
 	case 14:	// SO_LOAD_STRING
@@ -1958,7 +1961,8 @@
 			s = filename;
 			while ((*s++ = fetchScriptByte()));
 
-			SaveFileManager *mgr = _system->get_savefile_manager();
+			const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 			file = mgr->open_savefile(filename, getSavePath(), false);
 			if (file != NULL) {
 				byte *ptr;
@@ -1974,7 +1978,6 @@
 				free(ptr);
 				delete file;
 			}
-			delete mgr;
 			break;
 		}
 	case 15:	// SO_ROOM_TRANSFORM

Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -d -r1.111 -r1.112
--- dialogs.cpp	26 Apr 2004 20:28:33 -0000	1.111
+++ dialogs.cpp	25 Jun 2004 22:12:57 -0000	1.112
@@ -44,6 +44,8 @@
 #include "backends/wince/CEKeysDialog.h"
 #endif
 
+#include <memory>
+
 using GUI::CommandSender;
 using GUI::StaticTextWidget;
 using GUI::kButtonWidth;
@@ -255,19 +257,17 @@
 	uint i = saveMode ? 1 : 0;
 	bool avail_saves[81];
 
-	SaveFileManager *mgr = OSystem::instance()->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(OSystem::instance()->get_savefile_manager());
 
-	scumm->listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr);
+	scumm->listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr.get());
 	for (; i < ARRAYSIZE(avail_saves); i++) {
 		if (avail_saves[i])
-			scumm->getSavegameName(i, name, mgr);
+			scumm->getSavegameName(i, name, mgr.get());
 		else
 			name[0] = 0;
 		l.push_back(name);
 	}
 
-	delete mgr;
-
 	return l;
 }
 





More information about the Scummvm-git-logs mailing list