[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