[Scummvm-cvs-logs] SF.net SVN: scummvm:[52516] scummvm/trunk/engines/sci/engine/script.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sat Sep 4 11:41:39 CEST 2010


Revision: 52516
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52516&view=rev
Author:   thebluegr
Date:     2010-09-04 09:41:39 +0000 (Sat, 04 Sep 2010)

Log Message:
-----------
SCI: Fixed bug #3037595 - "KQ4: Crash reading message in the bottle (whale mouth)"

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/script.cpp

Modified: scummvm/trunk/engines/sci/engine/script.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/script.cpp	2010-09-04 09:20:38 UTC (rev 52515)
+++ scummvm/trunk/engines/sci/engine/script.cpp	2010-09-04 09:41:39 UTC (rev 52516)
@@ -329,11 +329,13 @@
 	uint16 offset = READ_SCI11ENDIAN_UINT16(_exportTable + pubfunct);
 	VERIFY(offset < _bufSize, "invalid export function pointer");
 
-	if (offset == 0 && getSciVersion() <= SCI_VERSION_1_LATE) {
-		// Check if the game has a second export table (e.g. script 912 in Camelot).
-		// This only makes sense for SCI0-SCI1, as the export table in SCI1.1+ games
-		// is located at a specific address, thus findBlock() won't work.
-		// Fixes bug #3039785
+	// Check if the offset found points to a second export table (e.g. script 912
+	// in Camelot and script 306 in KQ4). Such offsets are usually small (i.e. < 10),
+	// thus easily distinguished from actual code offsets.
+	// This only makes sense for SCI0-SCI1, as the export table in SCI1.1+ games
+	// is located at a specific address, thus findBlock() won't work.
+	// Fixes bugs #3039785 and #3037595.
+	if (offset < 10 && getSciVersion() <= SCI_VERSION_1_LATE) {
 		const uint16 *secondExportTable = (const uint16 *)findBlock(SCI_OBJ_EXPORTS, 0);
 
 		if (secondExportTable) {


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