[Scummvm-cvs-logs] CVS: scummvm/simon res.cpp,1.21,1.22 simon.cpp,1.237,1.238 sound.cpp,1.16,1.17

Jonathan Gray khalek at users.sourceforge.net
Sat Jun 14 07:59:10 CEST 2003


Update of /cvsroot/scummvm/scummvm/simon
In directory sc8-pr-cvs1:/tmp/cvs-serv10557

Modified Files:
	res.cpp simon.cpp sound.cpp 
Log Message:
make file objects stack based where possible, fixes a bunch of leaks

Index: res.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/res.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- res.cpp	1 Jun 2003 09:41:56 -0000	1.21
+++ res.cpp	14 Jun 2003 14:58:08 -0000	1.22
@@ -95,52 +95,52 @@
 };
 
 void SimonEngine::loadGamePcFile(const char *filename) {
-	File * in = new File();
+	File in;
 	int num_inited_objects;
 	int i, file_size;
 
 	/* read main gamepc file */
-	in->open(filename, _gameDataPath);
-	if (in->isOpen() == false) {
+	in.open(filename, _gameDataPath);
+	if (in.isOpen() == false) {
 		char *filename2;
 		filename2 = (char *)malloc(strlen(filename) + 2);
 		strcpy(filename2, filename);
 		strcat(filename2, ".");
-		in->open(filename2, _gameDataPath);
+		in.open(filename2, _gameDataPath);
 		free(filename2);
-		if (in->isOpen() == false)
+		if (in.isOpen() == false)
 			error("Can't open gamepc file '%s' or '%s.'", gss->gamepc_filename, gss->gamepc_filename);
 	}
 
-	num_inited_objects = allocGamePcVars(in);
+	num_inited_objects = allocGamePcVars(&in);
 
 	allocItem1();
 	loginPlayer();
-	readGamePcText(in);
+	readGamePcText(&in);
 
 	for (i = 2; i < num_inited_objects; i++) {
-		readItemFromGamePc(in, _itemarray_ptr[i]);
+		readItemFromGamePc(&in, _itemarray_ptr[i]);
 	}
 
-	readSubroutineBlock(in);
+	readSubroutineBlock(&in);
 
-	in->close();
+	in.close();
 
 	/* Read list of TABLE resources */
-	in->open("TBLLIST", _gameDataPath);
-	if (in->isOpen() == false) {
-		in->open("TBLLIST.", _gameDataPath);
-		if (in->isOpen() == false)
+	in.open("TBLLIST", _gameDataPath);
+	if (in.isOpen() == false) {
+		in.open("TBLLIST.", _gameDataPath);
+		if (in.isOpen() == false)
 			error("Can't open table resources file 'TBLLIST' or 'TBLLIST.'");
 	}
 
-	file_size = in->size();
+	file_size = in.size();
 
 	_tbl_list = (byte *)malloc(file_size);
 	if (_tbl_list == NULL)
 		error("Out of memory for strip table list");
-	in->read(_tbl_list, file_size);
-	in->close();
+	in.read(_tbl_list, file_size);
+	in.close();
 
 	/* Remember the current state */
 	_subroutine_list_org = _subroutine_list;
@@ -148,16 +148,16 @@
 	_tablesheap_curpos_org = _tablesheap_curpos;
 
 	/* Read list of TEXT resources */
-	in->open("STRIPPED.TXT", _gameDataPath);
-	if (in->isOpen() == false)
+	in.open("STRIPPED.TXT", _gameDataPath);
+	if (in.isOpen() == false)
 		error("Can't open text resources file 'STRIPPED.TXT'");
 
-	file_size = in->size();
+	file_size = in.size();
 	_stripped_txt_mem = (byte *)malloc(file_size);
 	if (_stripped_txt_mem == NULL)
 		error("Out of memory for strip text list");
-	in->read(_stripped_txt_mem, file_size);
-	in->close();
+	in.read(_stripped_txt_mem, file_size);
+	in.close();
 }
 
 void SimonEngine::readGamePcText(File *in) {

Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.237
retrieving revision 1.238
diff -u -d -r1.237 -r1.238
--- simon.cpp	8 Jun 2003 12:11:13 -0000	1.237
+++ simon.cpp	14 Jun 2003 14:58:08 -0000	1.238
@@ -4764,18 +4764,17 @@
 				midi.loadSMF (_game_file, music);
 			} else {
 				char buf[50];
-				File *f = new File();
+				File f;
 				sprintf(buf, "MOD%d.MUS", music);
-				f->open(buf, _gameDataPath);
-				if (f->isOpen() == false) {
+				f.open(buf, _gameDataPath);
+				if (f.isOpen() == false) {
 					warning("Can't load music from '%s'", buf);
 					return;
 				}
 				if (_game & GF_DEMO)
-					midi.loadS1D (f);
+					midi.loadS1D (&f);
 				else
-					midi.loadSMF (f, music);
-				delete f;
+					midi.loadSMF (&f, music);
 			}
 
 			midi.startTrack (0);

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/sound.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- sound.cpp	20 May 2003 15:17:21 -0000	1.16
+++ sound.cpp	14 Jun 2003 14:58:08 -0000	1.17
@@ -46,73 +46,73 @@
 	_voice_file = false;
 	_ambient_playing = 0;
 
-	File *file = new File();
-	File *file2 = new File();
+	File file;
+	File file2;
 	const char *s;
 
 #ifdef USE_MAD
-	file->open(gss->mp3_filename, gameDataPath);
-	if (file->isOpen() == false) {
+	file.open(gss->mp3_filename, gameDataPath);
+	if (file.isOpen() == false) {
 #endif
 		// for simon2 mac/amiga, only read index file
 		if (_game == GAME_SIMON2MAC) {
-			file->open("voices.idx", gameDataPath);
-			if (file->isOpen() == false) {
+			file.open("voices.idx", gameDataPath);
+			if (file.isOpen() == false) {
 				warning("Can't open voice index file 'voices.idx'");
 			} else {
-				file->seek(0, SEEK_END);
-				int end = file->pos();
-				file->seek(0, SEEK_SET);
+				file.seek(0, SEEK_END);
+				int end = file.pos();
+				file.seek(0, SEEK_SET);
 				_filenums = (uint16 *)malloc(end / 3 + 1);
 				_offsets = (uint32 *)malloc((end / 6) * 4 + 1);
 
 				for (int i = 1; i <= end / 6; i++) {
-					_filenums[i] = file->readUint16BE();
-					_offsets[i] = file->readUint32BE();
+					_filenums[i] = file.readUint16BE();
+					_offsets[i] = file.readUint32BE();
 				}
 				_voice_file = true;
 			}
 		} else if (_game & GF_WIN) {
 			s = gss->wav_filename;
-			file->open(s, gameDataPath);
-			if (file->isOpen() == false) {
+			file.open(s, gameDataPath);
+			if (file.isOpen() == false) {
 				warning("Can't open voice file %s", s);
 			} else	{
 				_voice_file = true;
-				_voice = new WavSound(_mixer, file);
+				_voice = new WavSound(_mixer, &file);
 			}
 		} else if (_game & GF_TALKIE) {
 			s = gss->voc_filename;
-			file->open(s, gameDataPath);
-			if (file->isOpen() == false) {
+			file.open(s, gameDataPath);
+			if (file.isOpen() == false) {
 				warning("Can't open voice file %s", s);
 			} else {
 				_voice_file = true;
-				_voice = new VocSound(_mixer, file);
+				_voice = new VocSound(_mixer, &file);
 			}
 		}
 #ifdef USE_MAD
 	} else {
 		_voice_file = true;
-		_voice = new MP3Sound(_mixer, file);
+		_voice = new MP3Sound(_mixer, &file);
 	}
 #endif
 
 	if (_game == GAME_SIMON1TALKIE) {
 #ifdef USE_MAD
-		file2->open(gss->mp3_effects_filename, gameDataPath);
-		if (file2->isOpen() == false) {
+		file2.open(gss->mp3_effects_filename, gameDataPath);
+		if (file2.isOpen() == false) {
 #endif
 			s = gss->voc_effects_filename;
-			file2->open(s, gameDataPath);
-			if (file2->isOpen() == false) {
+			file2.open(s, gameDataPath);
+			if (file2.isOpen() == false) {
 				warning("Can't open effects file %s", s);
 			} else {
-				_effects = new VocSound(_mixer, file2);
+				_effects = new VocSound(_mixer, &file2);
 			}
 #ifdef USE_MAD
 		} else {
-			_effects = new MP3Sound(_mixer, file2);
+			_effects = new MP3Sound(_mixer, &file2);
 		}
 #endif
 	}
@@ -121,24 +121,24 @@
 void SimonSound::readSfxFile(const char *filename, const char *gameDataPath) {
 	stopAll();
 
-	File *file = new File();
-	file->open(filename, gameDataPath);
+	File file;
+	file.open(filename, gameDataPath);
 
-	if (file->isOpen() == false) {
+	if (file.isOpen() == false) {
 		char *filename2;
 		filename2 = (char *)malloc(strlen(filename) + 2);
 		strcpy(filename2, filename);
 		strcat(filename2, ".");
-		file->open(filename2, gameDataPath);
+		file.open(filename2, gameDataPath);
 		free(filename2);
-		if (file->isOpen() == false) {
+		if (file.isOpen() == false) {
 			if (atoi(filename + 6) != 1 && atoi(filename + 6) != 30)
 			warning("readSfxFile: Can't load sfx file %s", filename);
 			return;
 		}
 	}
 
-	_effects = new WavSound(_mixer, file);
+	_effects = new WavSound(_mixer, &file);
 }
 
 void SimonSound::loadSfxTable(File *gameFile, uint32 base) {
@@ -151,15 +151,15 @@
 }
 
 void SimonSound::playVoice(uint sound) {
+	File file;
 	if (_game == GAME_SIMON2MAC && _filenums) {
 		char filename[16];
 		sprintf(filename, "voices%d.dat", _filenums[sound]);
-		File *file = new File();
-		file->open(filename, _gameDataPath);
-		if (file->isOpen() == false) {
+		file.open(filename, _gameDataPath);
+		if (file.isOpen() == false) {
 			warning("Can't open voice file %s", filename);
 		} else {
-			_voice = new WavSound(_mixer, file, _offsets);
+			_voice = new WavSound(_mixer, &file, _offsets);
 		}
 	}
 





More information about the Scummvm-git-logs mailing list