[Scummvm-cvs-logs] CVS: scummvm/saga sthread.cpp,1.105,1.106

Torbjörn Andersson eriktorbjorn at users.sourceforge.net
Tue Oct 11 07:04:03 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30372

Modified Files:
	sthread.cpp 
Log Message:
Rewrote some code that didn't look alignment safe to me.


Index: sthread.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.cpp,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- sthread.cpp	11 Oct 2005 13:23:47 -0000	1.105
+++ sthread.cpp	11 Oct 2005 14:03:36 -0000	1.106
@@ -273,8 +273,8 @@
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			thread->push(*((uint16*)addr));
-			debug(8, "0x%X", *((uint16*)addr));
+			thread->push(READ_UINT16(addr));
+			debug(8, "0x%X", READ_UINT16(addr));
 			break;
 		CASEOP(opPutFlag)
 			addr = thread->baseAddress(scriptS.readByte());
@@ -291,7 +291,7 @@
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			*(uint16*)addr =  thread->stackTop();
+			WRITE_UINT16(addr, thread->stackTop());
 			break;
 		CASEOP(opPutFlagV)
 			addr = thread->baseAddress(scriptS.readByte());
@@ -308,7 +308,7 @@
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			*(uint16*)addr = thread->pop();
+			WRITE_UINT16(addr, thread->pop());
 			break;
 
 // FUNCTION CALL INSTRUCTIONS
@@ -468,27 +468,31 @@
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			*(uint16*)addr += 1;
+			iparam1 = READ_UINT16(addr);
+			WRITE_UINT16(addr, iparam1 + 1);
 			break;
 		CASEOP(opDecV)
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			*(uint16*)addr -= 1;
+			iparam1 = READ_UINT16(addr);
+			WRITE_UINT16(addr, iparam1 - 1);
 			break;
 		CASEOP(opPostInc)
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			thread->push(*(int16*)addr);
-			*(uint16*)addr += 1;
+			iparam1 = READ_UINT16(addr);
+			thread->push(iparam1);
+			WRITE_UINT16(addr, iparam1 + 1);
 			break;
 		CASEOP(opPostDec)
 			addr = thread->baseAddress(scriptS.readByte());
 			iparam1 = scriptS.readSint16LE();
 			addr += iparam1;
-			thread->push(*(int16*)addr);
-			*(uint16*)addr -= 1;
+			iparam1 = READ_UINT16(addr);
+			thread->push(iparam1);
+			WRITE_UINT16(addr, iparam1 - 1);
 			break;
 
 // ARITHMETIC INSTRUCTIONS





More information about the Scummvm-git-logs mailing list