diff options
| author | Torbjörn Andersson | 2005-10-11 13:23:47 +0000 | 
|---|---|---|
| committer | Torbjörn Andersson | 2005-10-11 13:23:47 +0000 | 
| commit | b7e62ffb1816b339c2159708c2b97a8e5af25b33 (patch) | |
| tree | 8e1acb2d557a43a6143a7ac73a67f70a98a55c90 | |
| parent | 049dd317d70e89843df12e2d1d859ea850c600ae (diff) | |
| download | scummvm-rg350-b7e62ffb1816b339c2159708c2b97a8e5af25b33.tar.gz scummvm-rg350-b7e62ffb1816b339c2159708c2b97a8e5af25b33.tar.bz2 scummvm-rg350-b7e62ffb1816b339c2159708c2b97a8e5af25b33.zip | |
Fix stack underflow when Gorrister examines the mirror in IHNM. opReturnV
was popping *twice* the number of parameters that had originally been
pushed.
This appears to have been a bug in the ITE floppy version as well; one that
was fixed in the CD version.
At least that's how I understand it.
svn-id: r19017
| -rw-r--r-- | saga/sthread.cpp | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/saga/sthread.cpp b/saga/sthread.cpp index 1c4e0badb9..58db4d24ed 100644 --- a/saga/sthread.cpp +++ b/saga/sthread.cpp @@ -308,7 +308,7 @@ bool Script::runThread(ScriptThread *thread, uint instructionLimit) {  			addr = thread->baseAddress(scriptS.readByte());  			iparam1 = scriptS.readSint16LE();  			addr += iparam1; -			*(uint16*)addr =  thread->pop(); +			*(uint16*)addr = thread->pop();  			break;  // FUNCTION CALL INSTRUCTIONS @@ -380,8 +380,9 @@ bool Script::runThread(ScriptThread *thread, uint instructionLimit) {  			} else {  				thread->pop(); //cause it 0  				thread->_instructionOffset = thread->pop(); + +				// Pop all the call parameters off the stack  				iparam1 = thread->pop(); -				iparam1 += iparam1;  				while (iparam1--) {  					thread->pop();  				} | 
