[Scummvm-cvs-logs] CVS: scummvm/sky control.cpp,1.69,1.70

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


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

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

Index: control.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/control.cpp,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- control.cpp	28 Mar 2004 16:30:49 -0000	1.69
+++ control.cpp	25 Jun 2004 22:12:56 -0000	1.70
@@ -35,6 +35,7 @@
 #include "sky/struc.h"
 #include "sky/text.h"
 
+#include <memory>
 
 namespace Sky {
 
@@ -783,13 +784,13 @@
 		strcpy(fName, "SKY-VM-CD.ASD");
 	else
 		sprintf(fName, "SKY-VM%03d.ASD", SkyEngine::_systemVars.gameVersion);
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	f = mgr->open_savefile(fName, _savePath, false);
 	if (f != NULL) {
 		test = true;
 		delete f;
 	}
-	delete mgr;
 	return test;
 }
 
@@ -1003,7 +1004,8 @@
 
 	memset(destBuf, 0, MAX_SAVE_GAMES * MAX_TEXT_LEN);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *inf;
 	inf = mgr->open_savefile("SKY-VM.SAV",_savePath,false);
 	if (inf != NULL) {
@@ -1028,7 +1030,6 @@
 			destPos += MAX_TEXT_LEN;
 		}
 	}
-	delete mgr;
 }
 
 bool Control::loadSaveAllowed(void) {
@@ -1064,13 +1065,13 @@
 		srcPos += MAX_TEXT_LEN;
 	}
 	SaveFile *outf;
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	outf = mgr->open_savefile("SKY-VM.SAV", _savePath, true);
 	if (outf != NULL) {
 		outf->write(tmpBuf, tmpPos - tmpBuf);
 		delete outf;
 	}
-	delete mgr;
 	free(tmpBuf);	
 }
 
@@ -1081,11 +1082,11 @@
 	else
 		sprintf(fName, "SKY-VM%03d.ASD", SkyEngine::_systemVars.gameVersion);
 	SaveFile *outf;
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	outf = mgr->open_savefile(fName, _savePath, true);
 	if (outf == NULL) {
 		warning("Can't create file %s for autosaving", fName);
-		delete mgr;
 		return;
 	}
 	uint8 *saveData = (uint8 *)malloc(0x20000);
@@ -1094,7 +1095,6 @@
 	if (outf->write(saveData, fSize) != fSize)
 		warning("Can't write file %s for autosaving. Disk full?", fName);
 	delete outf;
-	delete mgr;
 	free(saveData);
 }
 
@@ -1102,11 +1102,11 @@
 
 	char fName[20];
 	sprintf(fName,"SKY-VM.%03d", _selectedGame);
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *outf;
 	outf = mgr->open_savefile(fName, _savePath, true);
 	if (outf == NULL) {
-		delete mgr;
 		return NO_DISK_SPACE;
 	}
 
@@ -1116,11 +1116,9 @@
 	if (outf->write(saveData, fSize) != fSize) {
 		free(saveData);
 		delete outf;
-		delete mgr;
 		return NO_DISK_SPACE;
 	}
 	delete outf;
-	delete mgr;
 	free(saveData);
 	return GAME_SAVED;
 }
@@ -1509,11 +1507,11 @@
 	} else
 		sprintf(fName,"SKY-VM.%03d", _selectedGame);
 
-	SaveFileManager *mgr = _system->get_savefile_manager();
+	const std::auto_ptr<SaveFileManager> mgr(_system->get_savefile_manager());
+
 	SaveFile *inf;
 	inf = mgr->open_savefile(fName, _savePath, false);
 	if (inf == NULL) {
-		delete mgr;
 		return RESTORE_FAILED;
 	}
 
@@ -1526,14 +1524,12 @@
 		warning("Can't read from file!");
 		free(saveData);
 		delete inf;
-		delete mgr;
 		return RESTORE_FAILED;
 	}
 
 	uint16 res = parseSaveData(saveData);
 	SkyEngine::_systemVars.pastIntro = true;
 	delete inf;
-	delete mgr;
 	free(saveData);
 	return res;
 }





More information about the Scummvm-git-logs mailing list