[Scummvm-cvs-logs] CVS: scummvm/sword2 save_rest.cpp,1.55,1.56

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


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

Modified Files:
	save_rest.cpp 
Log Message:
Use auto_ptr to avoid leaks

Index: save_rest.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/save_rest.cpp,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -d -r1.55 -r1.56
--- save_rest.cpp	10 Jun 2004 06:14:07 -0000	1.55
+++ save_rest.cpp	25 Jun 2004 22:12:54 -0000	1.56
@@ -33,6 +33,8 @@
 #include "sword2/logic.h"
 #include "sword2/resman.h"
 
+#include <memory>
+
 namespace Sword2 {
 
 // A savegame consists of a header and the global variables
@@ -163,18 +165,17 @@
 
 	sprintf(saveFileName, "%s.%.3d", _targetName, slotNo);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *out;
 
 	if (!(out = mgr->open_savefile(saveFileName, getSavePath(), true))) {
-		delete mgr;
 		return SR_ERR_FILEOPEN;
 	}
 
 	uint32 itemsWritten = out->write(buffer, bufferSize);
 
 	delete out;
-	delete mgr;
 
 	if (itemsWritten == bufferSize)
 		return SR_OK;
@@ -213,12 +214,12 @@
 
 	sprintf(saveFileName, "%s.%.3d", _targetName, slotNo);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *in;
 
 	if (!(in = mgr->open_savefile(saveFileName, getSavePath(), false))) {
 		// error: couldn't open file
-		delete mgr;
 		return SR_ERR_FILEOPEN;
 	}
 
@@ -226,14 +227,11 @@
 	uint32 itemsRead = in->read(buffer, bufferSize);
 
 	delete in;
-	delete mgr;
 
 	if (itemsRead != bufferSize) {
 		// We didn't get all of it. At the moment we have no way of
 		// knowing why, so assume that it's an incompatible savegame.
 
-		delete in;
-		delete mgr;
 		return SR_ERR_INCOMPATIBLE;
 	}
 
@@ -363,11 +361,11 @@
 
 	sprintf(saveFileName, "%s.%.3d", _targetName, slotNo);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *in;
 
 	if (!(in = mgr->open_savefile(saveFileName, getSavePath(), false))) {
-		delete mgr;
 		return SR_ERR_FILEOPEN;
 	}
 
@@ -375,7 +373,6 @@
 
 	in->read(&dummy, sizeof(dummy));
 	delete in;
-	delete mgr;
 
 	strcpy((char *) description, dummy.description);
 	return SR_OK;
@@ -393,16 +390,15 @@
 
 	sprintf(saveFileName, "%s.%.3d", _targetName, slotNo);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *in;
 
 	if (!(in = mgr->open_savefile(saveFileName, getSavePath(), false))) {
-		delete mgr;
 		return false;
 	}
 
 	delete in;
-	delete mgr;
 	return true;
 }
 





More information about the Scummvm-git-logs mailing list