From 283a265d8a43e25339e4af36833dd4c23c0938a3 Mon Sep 17 00:00:00 2001 From: Yexo Date: Tue, 27 Jan 2009 13:11:11 +0000 Subject: [PATCH] (svn r15284) -Fix [FS#2582] (r15045): Parameters were popped from the squirrel stack twice. --- src/ai/ai_instance.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp index 1d719b5031..5ad763ae9c 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;