[Scummvm-cvs-logs] SF.net SVN: scummvm:[33727] scummvm/trunk/engines/cine

buddha_ at users.sourceforge.net buddha_ at users.sourceforge.net
Sun Aug 10 00:38:05 CEST 2008


Revision: 33727
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33727&view=rev
Author:   buddha_
Date:     2008-08-09 22:38:03 +0000 (Sat, 09 Aug 2008)

Log Message:
-----------
Converted zoneData and zoneQuery tables from plain array types to Common::Array. Should help catch out of bounds access errors that may cause memory corruption.

Modified Paths:
--------------
    scummvm/trunk/engines/cine/cine.cpp
    scummvm/trunk/engines/cine/main_loop.cpp
    scummvm/trunk/engines/cine/various.cpp
    scummvm/trunk/engines/cine/various.h

Modified: scummvm/trunk/engines/cine/cine.cpp
===================================================================
--- scummvm/trunk/engines/cine/cine.cpp	2008-08-09 20:55:01 UTC (rev 33726)
+++ scummvm/trunk/engines/cine/cine.cpp	2008-08-09 22:38:03 UTC (rev 33727)
@@ -132,6 +132,14 @@
 	animDataTable.resize(NUM_MAX_ANIMDATA);
 	freeAnimDataTable();
 
+	// Resize zone data table to its correct size and reset all its elements
+	zoneData.resize(NUM_MAX_ZONE);
+	Common::set_to(zoneData.begin(), zoneData.end(), 0);
+
+	// Resize zone query table to its correct size and reset all its elements
+	zoneQuery.resize(NUM_MAX_ZONE);	
+	Common::set_to(zoneQuery.begin(), zoneQuery.end(), 0);
+
 	_timerDelayMultiplier = 12; // Set default speed
 	setupOpcodes();
 

Modified: scummvm/trunk/engines/cine/main_loop.cpp
===================================================================
--- scummvm/trunk/engines/cine/main_loop.cpp	2008-08-09 20:55:01 UTC (rev 33726)
+++ scummvm/trunk/engines/cine/main_loop.cpp	2008-08-09 22:38:03 UTC (rev 33727)
@@ -341,9 +341,7 @@
 		
 		// Clear the zoneQuery table (Operation Stealth specific)
 		if (g_cine->getGameType() == Cine::GType_OS) {
-			for (uint i = 0; i < NUM_MAX_ZONE; i++) {
-				zoneQuery[i] = 0;
-			}
+			Common::set_to(zoneQuery.begin(), zoneQuery.end(), 0);
 		}
 
 		if (g_cine->getGameType() == Cine::GType_OS) {

Modified: scummvm/trunk/engines/cine/various.cpp
===================================================================
--- scummvm/trunk/engines/cine/various.cpp	2008-08-09 20:55:01 UTC (rev 33726)
+++ scummvm/trunk/engines/cine/various.cpp	2008-08-09 22:38:03 UTC (rev 33727)
@@ -126,8 +126,8 @@
 int16 objListTab[20];
 
 uint16 exitEngine;
-uint16 zoneData[NUM_MAX_ZONE];
-uint16 zoneQuery[NUM_MAX_ZONE]; //!< Only exists in Operation Stealth
+Common::Array<uint16> zoneData;
+Common::Array<uint16> zoneQuery; //!< Only exists in Operation Stealth
 
 /*! \brief Move the player character using the keyboard
  * \param x Negative values move left, positive right, zero not at all

Modified: scummvm/trunk/engines/cine/various.h
===================================================================
--- scummvm/trunk/engines/cine/various.h	2008-08-09 20:55:01 UTC (rev 33726)
+++ scummvm/trunk/engines/cine/various.h	2008-08-09 22:38:03 UTC (rev 33727)
@@ -129,8 +129,8 @@
 };
 
 #define NUM_MAX_ZONE 16
-extern uint16 zoneData[NUM_MAX_ZONE];
-extern uint16 zoneQuery[NUM_MAX_ZONE];
+extern Common::Array<uint16> zoneData;
+extern Common::Array<uint16> zoneQuery;
 
 void addMessage(byte param1, int16 param2, int16 param3, int16 param4, int16 param5);
 


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