summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;