diff options
-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; |