[Scummvm-cvs-logs] SF.net SVN: scummvm:[40461] scummvm/trunk/engines/scumm/smush

sev at users.sourceforge.net sev at users.sourceforge.net
Mon May 11 20:34:54 CEST 2009


Revision: 40461
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40461&view=rev
Author:   sev
Date:     2009-05-11 18:34:54 +0000 (Mon, 11 May 2009)

Log Message:
-----------
Fix bug #2678272: "FT: Russian version crashes on windows and psp"

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/smush/smush_player.cpp
    scummvm/trunk/engines/scumm/smush/smush_player.h

Modified: scummvm/trunk/engines/scumm/smush/smush_player.cpp
===================================================================
--- scummvm/trunk/engines/scumm/smush/smush_player.cpp	2009-05-11 18:18:43 UTC (rev 40460)
+++ scummvm/trunk/engines/scumm/smush/smush_player.cpp	2009-05-11 18:34:54 UTC (rev 40461)
@@ -985,7 +985,7 @@
 				error("SmushPlayer: Unable to open file %s", _seekFile.c_str());
 			_base = tmp;
 			_base->readUint32BE();
-			_base->readUint32BE();
+			_baseSize = _base->readUint32BE();
 
 			if (_seekPos > 0) {
 				assert(_seekPos > 8);
@@ -1023,12 +1023,14 @@
 	const int32 subSize = _base->readUint32BE();
 	const int32 subOffset = _base->pos();
 
-	if (_base->eos()) {
+	if (_base->pos() >= _baseSize) {
 		_vm->_smushVideoShouldFinish = true;
 		_endOfFile = true;
 		return;
 	}
 
+	debug(3, "Chunk: %s at %x", Common::tag2string(subType).c_str(), subOffset);
+
 	switch (subType) {
 	case MKID_BE('AHDR'): // FT INSANE may seek file to the beginning
 		handleAnimHeader(subSize, *_base);
@@ -1037,7 +1039,7 @@
 		handleFrame(subSize, *_base);
 		break;
 	default:
-		error("Unknown Chunk found at %x: %x, %d", subOffset, subType, subSize);
+		error("Unknown Chunk found at %x: %s, %d", subOffset, Common::tag2string(subType).c_str(), subSize);
 	}
 
 	_base->seek(subOffset + subSize, SEEK_SET);

Modified: scummvm/trunk/engines/scumm/smush/smush_player.h
===================================================================
--- scummvm/trunk/engines/scumm/smush/smush_player.h	2009-05-11 18:18:43 UTC (rev 40460)
+++ scummvm/trunk/engines/scumm/smush/smush_player.h	2009-05-11 18:34:54 UTC (rev 40461)
@@ -51,6 +51,7 @@
 	Codec37Decoder *_codec37;
 	Codec47Decoder *_codec47;
 	Common::SeekableReadStream *_base;
+	uint32 _baseSize;
 	byte *_frameBuffer;
 	byte *_specialBuffer;
 


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