[Scummvm-cvs-logs] SF.net SVN: scummvm: [29963] scummvm/trunk/engines/scumm/gfx.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun Dec 23 17:02:58 CET 2007


Revision: 29963
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29963&view=rev
Author:   fingolfin
Date:     2007-12-23 08:02:58 -0800 (Sun, 23 Dec 2007)

Log Message:
-----------
Fix for bug #1837375: MM: Walk behind mask char data

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/gfx.cpp

Modified: scummvm/trunk/engines/scumm/gfx.cpp
===================================================================
--- scummvm/trunk/engines/scumm/gfx.cpp	2007-12-23 15:23:01 UTC (rev 29962)
+++ scummvm/trunk/engines/scumm/gfx.cpp	2007-12-23 16:02:58 UTC (rev 29963)
@@ -263,7 +263,11 @@
 	decodeC64Gfx(roomptr + READ_LE_UINT16(roomptr + 12), _C64.picMap, roomptr[4] * roomptr[5]);
 	decodeC64Gfx(roomptr + READ_LE_UINT16(roomptr + 14), _C64.colorMap, roomptr[4] * roomptr[5]);
 	decodeC64Gfx(roomptr + READ_LE_UINT16(roomptr + 16), _C64.maskMap, roomptr[4] * roomptr[5]);
-	decodeC64Gfx(roomptr + READ_LE_UINT16(roomptr + 18) + 2, _C64.maskChar, READ_LE_UINT16(roomptr + READ_LE_UINT16(roomptr + 18)));
+	
+	// Read the mask data. The 16bit length value seems to always be 8 too big.
+	// See bug #1837375 for details on this.
+	const byte *maskPtr = roomptr + READ_LE_UINT16(roomptr + 18);
+	decodeC64Gfx(maskPtr + 2, _C64.maskChar, READ_LE_UINT16(maskPtr) - 8);
 	_objectMode = true;
 }
 


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