[Scummvm-git-logs] scummvm master -> 10151966a6e1ae58f01d37e6fb110c7f740c96ba

wjp wjp at usecode.org
Sat Nov 19 19:16:53 CET 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
10151966a6 SCI32: Add missing updateInfoFlagViewVisible call


Commit: 10151966a6e1ae58f01d37e6fb110c7f740c96ba
    https://github.com/scummvm/scummvm/commit/10151966a6e1ae58f01d37e6fb110c7f740c96ba
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2016-11-19T19:16:12+01:00

Commit Message:
SCI32: Add missing updateInfoFlagViewVisible call

I missed the one for varselector sends handled by the secondary loop in
op_ret. This fixes #9641.

Changed paths:
    engines/sci/engine/vm.cpp



diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index 700b7d2..a6d37d0 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -335,6 +335,9 @@ ExecStack *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, StackPt
 		argp += argc + 1;
 	}	// while (framesize > 0)
 
+	// Perform all varselector actions at the top of the stack immediately.
+	// Note that there may be some behind method selector calls as well;
+	// those will get executed by op_ret later.
 	_exec_varselectors(s);
 
 	return s->_executionStack.empty() ? NULL : &(s->_executionStack.back());
@@ -956,9 +959,13 @@ void run_vm(EngineState *s) {
 				if (old_xs->type == EXEC_STACK_TYPE_VARSELECTOR) {
 					// varselector access?
 					reg_t *var = old_xs->getVarPointer(s->_segMan);
-					if (old_xs->argc) // write?
+					if (old_xs->argc) { // write?
 						*var = old_xs->variables_argp[1];
-					else // No, read
+
+#ifdef ENABLE_SCI32
+						updateInfoFlagViewVisible(s->_segMan->getObject(old_xs->addr.varp.obj), old_xs->addr.varp.varindex);
+#endif
+					} else // No, read
 						s->r_acc = *var;
 				}
 





More information about the Scummvm-git-logs mailing list