[Scummvm-cvs-logs] SF.net SVN: scummvm:[45638] scummvm/trunk/sound

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Nov 3 21:49:54 CET 2009


Revision: 45638
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45638&view=rev
Author:   fingolfin
Date:     2009-11-03 20:49:53 +0000 (Tue, 03 Nov 2009)

Log Message:
-----------
Fix for bug #2890038 (FT: Crashes when entering inventory)

Modified Paths:
--------------
    scummvm/trunk/sound/audiostream.cpp
    scummvm/trunk/sound/voc.cpp

Modified: scummvm/trunk/sound/audiostream.cpp
===================================================================
--- scummvm/trunk/sound/audiostream.cpp	2009-11-03 20:47:10 UTC (rev 45637)
+++ scummvm/trunk/sound/audiostream.cpp	2009-11-03 20:49:53 UTC (rev 45638)
@@ -220,6 +220,8 @@
 		: _rate(rate), _stream(stream), _beginLoop(beginLoop), _endLoop(endLoop), _disposeAfterUse(disposeStream),
 		  _audioBlockCount(numBlocks), _loop(loop) {
 
+		assert(numBlocks > 0);
+
 		// Allocate streaming buffer
 		if (is16Bit) {
 			_buffer = (byte *)malloc(BUFFER_SIZE * sizeof(int16));

Modified: scummvm/trunk/sound/voc.cpp
===================================================================
--- scummvm/trunk/sound/voc.cpp	2009-11-03 20:47:10 UTC (rev 45637)
+++ scummvm/trunk/sound/voc.cpp	2009-11-03 20:49:53 UTC (rev 45638)
@@ -180,7 +180,6 @@
 
 	debug(2, "parseVOCFormat");
 
-
 	if (stream.read(&fileHeader, 8) != 8)
 		goto invalid;
 
@@ -301,8 +300,13 @@
 
 	int numBlocks = parseVOCFormat(stream, block, rate, loops, begin_loop, end_loop);
 
-	AudioStream *audioStream = makeLinearDiskStream(&stream, block, numBlocks, rate, flags, takeOwnership, begin_loop, end_loop);
+	AudioStream *audioStream = 0;
 
+	// Create an audiostream from the data. Note the numBlocks may be 0,
+	// e.g. when invalid data is encountered. See bug #2890038.
+	if (numBlocks)
+		audioStream = makeLinearDiskStream(&stream, block, numBlocks, rate, flags, takeOwnership, begin_loop, end_loop);
+
 	delete[] block;
 
 	return audioStream;


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