diff options
author | Yexo <yexo@openttd.org> | 2009-01-27 13:11:11 +0000 |
---|---|---|
committer | Yexo <yexo@openttd.org> | 2009-01-27 13:11:11 +0000 |
commit | ea01534e6de7579574503e9a92b3dcdaba389974 (patch) | |
tree | a8a23b4e93094f3d598dfff2c05d909542830c84 | |
parent | 9bb57ec8402abacd7b2cccb32cfcfdccdcf566f0 (diff) | |
download | openttd-ea01534e6de7579574503e9a92b3dcdaba389974.tar.xz |
(svn r15284) -Fix [FS#2582] (r15045): Parameters were popped from the squirrel stack twice.
-rw-r--r-- | src/ai/ai_instance.cpp | 10 |
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; |