Fix #7606: Game crash when trying to clean up a crashed script

Also fix another possible memory leak

(cherry picked from commit cdf9ff6f5f505517600dc487bc49d9e3cca90d9a)
This commit is contained in:
Charles Pigott 2019-11-02 12:50:42 +00:00 committed by Jonathan G Rennison
parent daf7cf1913
commit 85b517cd93

View File

@ -91,6 +91,10 @@ void ScriptInstance::Initialize(const char *main_script, const char *instance_na
/* Create the main-class */
this->instance = MallocT<SQObject>(1);
if (!this->engine->CreateClassInstance(instance_name, this->controller, this->instance)) {
/* If CreateClassInstance has returned false instance has not been
* registered with squirrel, so avoid trying to Release it by clearing it now */
delete this->instance;
this->instance = nullptr;
this->Died();
return;
}
@ -156,6 +160,7 @@ void ScriptInstance::Died()
this->last_allocated_memory = this->GetAllocatedMemory(); // Update cache
if (this->instance != nullptr) this->engine->ReleaseObject(this->instance);
delete this->instance;
delete this->engine;
this->instance = nullptr;
this->engine = nullptr;