[Scummvm-cvs-logs] SF.net SVN: scummvm:[35869] scummvm/trunk/engines/cruise/saveload.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Fri Jan 16 02:48:55 CET 2009


Revision: 35869
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35869&view=rev
Author:   fingolfin
Date:     2009-01-16 01:48:55 +0000 (Fri, 16 Jan 2009)

Log Message:
-----------
Mark cruise save/load code as not endian safe

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/saveload.cpp

Modified: scummvm/trunk/engines/cruise/saveload.cpp
===================================================================
--- scummvm/trunk/engines/cruise/saveload.cpp	2009-01-14 21:16:21 UTC (rev 35868)
+++ scummvm/trunk/engines/cruise/saveload.cpp	2009-01-16 01:48:55 UTC (rev 35869)
@@ -318,6 +318,8 @@
 		if (ptr->varA) {
 			ptr->var6 = (uint8 *) mallocAndZero(ptr->varA);
 
+			// FIXME: This code is not endian safe, and breaks if struct
+			// packing changes. Read/write the members one by one instead.
 			currentSaveFile.read(ptr->var6, ptr->varA);
 		}
 
@@ -441,6 +443,8 @@
 
 		if(numberOfWalkboxes)
 		{
+			// FIXME: This code is not endian safe, and breaks if struct
+			// packing changes. Read/write the members one by one instead.
 			currentSaveFile.write(walkboxColor, numberOfWalkboxes * 2);
 			currentSaveFile.write(walkboxState, numberOfWalkboxes * 2);
 		}
@@ -473,6 +477,8 @@
 		numberOfWalkboxes = currentSaveFile.readUint16LE();
 
 		if (numberOfWalkboxes) {
+			// FIXME: This code is not endian safe, and breaks if struct
+			// packing changes. Read/write the members one by one instead.
 			currentSaveFile.read(walkboxColor, numberOfWalkboxes * 2);
 			currentSaveFile.read(walkboxState, numberOfWalkboxes * 2);
 		}
@@ -481,6 +487,8 @@
 			persoTable[i] = (persoStruct*)currentSaveFile.readSint32LE();
 
 			if (persoTable[i]) {
+				// FIXME: This code is not endian safe, and breaks if struct
+				// packing changes. Read/write the members one by one instead.
 				assert(sizeof(persoStruct) == 0x6AA);
 				persoTable[i] = (persoStruct *)mallocAndZero(sizeof(persoStruct));
 				currentSaveFile.read(persoTable[i], 0x6AA);
@@ -736,8 +744,10 @@
 	var41 = currentSaveFile->readSint16LE();
 	entrerMenuJoueur = currentSaveFile->readSint16LE();
 
+	// FIXME: This code is not endian safe, and breaks if struct
+	// packing changes. Read/write the members one by one instead.
 	currentSaveFile->read(newPal, sizeof(int16) * NBCOLORS);
-	currentSaveFile->read(newPal, sizeof(int16) * NBCOLORS);
+	currentSaveFile->read(newPal, sizeof(int16) * NBCOLORS);	// FIXME: Should this read into workpal ?
 
 	// here code seems bogus... this should read music name and it may be a buffer overrun
 	currentSaveFile->skip(21);
@@ -751,6 +761,8 @@
 		currentSaveFile->read(backgroundTable[i].extention, 6);
 	}
 
+	// FIXME: This code is not endian safe, and breaks if struct
+	// packing changes. Read/write the members one by one instead.
 	currentSaveFile->read(palScreen, sizeof(int16) * NBCOLORS * NBSCREENS);
 	currentSaveFile->read(initVar5, 24);
 	currentSaveFile->read(globalVars, stateID * 2); // ok


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