[Scummvm-cvs-logs] SF.net SVN: scummvm:[46407] tools/branches/gsoc2009-gui/compress_scumm_san. cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Dec 17 22:12:21 CET 2009


Revision: 46407
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46407&view=rev
Author:   fingolfin
Date:     2009-12-17 21:12:20 +0000 (Thu, 17 Dec 2009)

Log Message:
-----------
TOOLS: Don't memset C++ objects... and catch exception when the end of the file is reached

Modified Paths:
--------------
    tools/branches/gsoc2009-gui/compress_scumm_san.cpp

Modified: tools/branches/gsoc2009-gui/compress_scumm_san.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_scumm_san.cpp	2009-12-17 20:30:19 UTC (rev 46406)
+++ tools/branches/gsoc2009-gui/compress_scumm_san.cpp	2009-12-17 21:12:20 UTC (rev 46407)
@@ -45,7 +45,7 @@
 	int bits = 16;
 	int chan = 2;
 	byte wav[44];
-	memset (wav, 0,	44);
+	memset(wav, 0,	44);
 	wav[0] = 'R';
 	wav[1] = 'I';
 	wav[2] = 'F';
@@ -650,9 +650,21 @@
 
 	FrameInfo *frameInfo = (FrameInfo *)malloc(sizeof(FrameInfo) * nbframes);
 
-	memset(_audioTracks, 0, sizeof(AudioTrackInfo) * COMPRESS_SCUMM_SAN_MAX_TRACKS);
 	for (l = 0; l < COMPRESS_SCUMM_SAN_MAX_TRACKS; l++) {
 		_audioTracks[l].animFrame = -1;
+		_audioTracks[l].trackId = 0;
+		_audioTracks[l].bits = 0;
+		_audioTracks[l].stereo = 0;
+		_audioTracks[l].freq = 0;
+		_audioTracks[l].used = 0;
+		_audioTracks[l].waveDataSize = 0;
+		_audioTracks[l].volumes = 0;
+		_audioTracks[l].pans = 0;
+		_audioTracks[l].sizes = 0;
+		_audioTracks[l].nbframes = 0;
+		_audioTracks[l].countFrames = 0;
+		_audioTracks[l].lastFrame = 0;
+		_audioTracks[l].sdatSize = 0;
 	}
 
 	bool tracksCompress = false;
@@ -676,7 +688,11 @@
 		frameInfo[l].lessPSADSize = 0;
 		output.writeUint32BE(frameSize);
 		for (;;) {
-			tag = input.readUint32BE(); // chunk tag
+			try {
+				tag = input.readUint32BE(); // chunk tag
+			} catch(...) {
+				break;
+			}
 			if (input.eos())
 				break;
 			if (tag == 'FRME') {


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