From 4f2cfd5feba4ce07a94c151c740cc6ba785c3932 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 13 Jun 2005 13:40:28 +0000 Subject: [PATCH] Fix crash on chasm. svn-id: r18383 --- saga/sfuncs.cpp | 2 +- saga/sthread.cpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp index 3ae3fbe3739..2ac829ddb89 100644 --- a/saga/sfuncs.cpp +++ b/saga/sfuncs.cpp @@ -1495,7 +1495,7 @@ void Script::SF_text(SCRIPTFUNC_PARAMS) { for (int i = 0; i < nArgs; i++) thread->pop(); - error("STUB: SF_text(), %d args", nArgs); + warning("STUB: SF_text(), %d args", nArgs); } // Script function #60 (0x3C) diff --git a/saga/sthread.cpp b/saga/sthread.cpp index 9b831506a8c..42cba6bda65 100644 --- a/saga/sthread.cpp +++ b/saga/sthread.cpp @@ -194,6 +194,7 @@ bool Script::runThread(ScriptThread *thread, uint instructionLimit) { byte argumentsCount; uint16 functionNumber; + uint16 checkStackTopIndex; ScriptFunctionType scriptFunction; int debug_print = 0; @@ -342,8 +343,12 @@ bool Script::runThread(ScriptThread *thread, uint instructionLimit) { debug(8, "Calling 0x%X %s", functionNumber, _scriptFunctionsList[functionNumber].scriptFunctionName); scriptFunction = _scriptFunctionsList[functionNumber].scriptFunction; + checkStackTopIndex = thread->_stackTopIndex + argumentsCount; + (this->*scriptFunction)(thread, argumentsCount); + thread->_stackTopIndex = checkStackTopIndex; + if (scriptFunction == &Saga::Script::sfScriptGotoScene) { return true; // cause abortAllThreads called and _this_ thread destroyed }