[Scummvm-cvs-logs] SF.net SVN: scummvm:[50157] scummvm/trunk/engines/sci/engine/vm.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Tue Jun 22 20:25:16 CEST 2010


Revision: 50157
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50157&view=rev
Author:   thebluegr
Date:     2010-06-22 18:25:15 +0000 (Tue, 22 Jun 2010)

Log Message:
-----------
Fixed 2 crashes in QFG1VGA, when dying:
- Ignoring a non-game breaking script bug (modifying the "longSong" object with argc = 2)
- Don't pop the callk stack frame if the stack is empty - fixes a crash when restoring from the death screen

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/vm.cpp

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-22 17:51:47 UTC (rev 50156)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-22 18:25:15 UTC (rev 50157)
@@ -417,6 +417,9 @@
 				if (!strcmp(objectName, "Sq4GlobalNarrator") && selector == 606) {
 					// SQ4 has a script bug in the Sq4GlobalNarrator object when invoking the
 					// returnVal selector, which doesn't affect gameplay, thus don't diplay it
+				} else if (!strcmp(objectName, "longSong") && selector == 3 && g_sci->getGameId() == "qfg1") {
+					// QFG1VGA has a script bug in the longSong object when invoking the
+					// loop selector, which doesn't affect gameplay, thus don't diplay it
 				} else {
 					// Unknown script bug, show it
 					reg_t oldReg = *varp.getPointer(s->_segMan);
@@ -636,8 +639,9 @@
 #endif
 		}
 
-		// Remove callk stack frame again
-		s->_executionStack.pop_back();
+		// Remove callk stack frame again, if there's still an execution stack
+		if (s->_executionStack.begin() != s->_executionStack.end())
+			s->_executionStack.pop_back();
 	} else {
 		Common::String warningMsg = "Dummy function " + kernelFunc.origName +
 									Common::String::printf("[0x%x]", kernelFuncNum) +


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