From 4a8b3e13a119a5db89d05663ac57896a3cc6c096 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 6 Mar 2022 15:57:25 +0100 Subject: [PATCH] Hopefully fixes the issue with ref counting in angelscript --- src/ScriptResolving/AngelScript/AngelScriptResolver.cpp | 1 + src/ScriptResolving/AngelScript/AngelScriptScript.cpp | 1 + src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp | 1 - 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ScriptResolving/AngelScript/AngelScriptResolver.cpp b/src/ScriptResolving/AngelScript/AngelScriptResolver.cpp index 019fd1a..c3c1bee 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptResolver.cpp +++ b/src/ScriptResolving/AngelScript/AngelScriptResolver.cpp @@ -187,6 +187,7 @@ CreatureLib::Battling::BattleScript* AngelScriptResolver::LoadScript(const ArbUt } auto ctx = _contextPool->RequestContext(); auto obj = const_cast(t.value().get())->Instantiate(ctx); + obj->AddRef(); _contextPool->ReturnContextToPool(ctx); auto ownerType = GetScriptOwnerType(category); return new AngelScriptScript(owner, ownerType, this, t.value(), obj, _contextPool); diff --git a/src/ScriptResolving/AngelScript/AngelScriptScript.cpp b/src/ScriptResolving/AngelScript/AngelScriptScript.cpp index d6d6702..c57d113 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptScript.cpp +++ b/src/ScriptResolving/AngelScript/AngelScriptScript.cpp @@ -34,6 +34,7 @@ CreatureLib::Battling::BattleScript* AngelScriptScript::Clone(const ArbUt::Optio if (_obj != nullptr) { obj->CopyFrom(_obj); } + obj->AddRef(); _ctxPool->ReturnContextToPool(ctx); return new AngelScriptScript(owner, GetAngelscriptOwner()->GetType(), _resolver, _type, obj, _ctxPool); diff --git a/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp b/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp index 67d015e..0437e19 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp +++ b/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp @@ -61,7 +61,6 @@ public: throw ArbUt::Exception("Instantiation failed."); } asIScriptObject* obj = *(asIScriptObject**)ctx->GetAddressOfReturnValue(); - obj->AddRef(); return obj; }