summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYexo <yexo@openttd.org>2009-01-27 13:11:11 +0000
committerYexo <yexo@openttd.org>2009-01-27 13:11:11 +0000
commitea01534e6de7579574503e9a92b3dcdaba389974 (patch)
treea8a23b4e93094f3d598dfff2c05d909542830c84
parent9bb57ec8402abacd7b2cccb32cfcfdccdcf566f0 (diff)
downloadopenttd-ea01534e6de7579574503e9a92b3dcdaba389974.tar.xz
(svn r15284) -Fix [FS#2582] (r15045): Parameters were popped from the squirrel stack twice.
-rw-r--r--src/ai/ai_instance.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp
index 1d719b503..5ad763ae9 100644
--- a/src/ai/ai_instance.cpp
+++ b/src/ai/ai_instance.cpp
@@ -606,6 +606,7 @@ void AIInstance::Load(int version)
return;
}
HSQUIRRELVM vm = this->engine->GetVM();
+ SQInteger old_top = sq_gettop(vm);
SlObject(NULL, _ai_byte);
/* Check if there was anything saved at all. */
@@ -624,12 +625,17 @@ void AIInstance::Load(int version)
if (this->engine->MethodExists(*this->instance, "Load")) {
sq_call(vm, 3, SQFalse, SQFalse);
+
+ /* Pop 1) the object instance, 2) the (null) result. */
+ sq_pop(vm, 2);
} else {
AILog::Warning("Loading failed: there was data for the AI to load, but the AI does not have a Load() function.");
+
+ /* Pop 1) the object instance, 2) the function name, 3) the instance again, 4) the version */
+ sq_pop(vm, 4);
}
- /* Pop 1) the object instance, 2) the function name, 3) the instance again, 4) the (null) result. */
- sq_pop(vm, 4);
+ assert(sq_gettop(vm) == old_top);
AIObject::SetAllowDoCommand(true);
return;