From 49bc9d03cb847a2b4c273157f179f99fc1c36999 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 6 Jun 2025 21:43:05 +0100 Subject: [PATCH] Codechange: Get/pass script controller by reference instead of pointer. --- src/script/api/script_controller.cpp | 12 ++++++------ src/script/script_instance.hpp | 6 +++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp index 84b7c1ae73..9e22d35d9a 100644 --- a/src/script/api/script_controller.cpp +++ b/src/script/api/script_controller.cpp @@ -76,7 +76,7 @@ ScriptController::ScriptController(::CompanyID company) : /* static */ uint ScriptController::GetTick() { - return ScriptObject::GetActiveInstance().GetController()->ticks; + return ScriptObject::GetActiveInstance().GetController().ticks; } /* static */ int ScriptController::GetOpsTillSuspend() @@ -96,7 +96,7 @@ ScriptController::ScriptController(::CompanyID company) : /* static */ HSQOBJECT ScriptController::Import(const std::string &library, const std::string &class_name, int version) { - ScriptController *controller = ScriptObject::GetActiveInstance().GetController(); + ScriptController &controller = ScriptObject::GetActiveInstance().GetController(); Squirrel *engine = ScriptObject::GetActiveInstance().engine; HSQUIRRELVM vm = engine->GetVM(); @@ -114,11 +114,11 @@ ScriptController::ScriptController(::CompanyID company) : std::string fake_class; - LoadedLibraryList::iterator it = controller->loaded_library.find(library_name); - if (it != controller->loaded_library.end()) { + LoadedLibraryList::iterator it = controller.loaded_library.find(library_name); + if (it != controller.loaded_library.end()) { fake_class = (*it).second; } else { - int next_number = ++controller->loaded_library_count; + int next_number = ++controller.loaded_library_count; /* Create a new fake internal name */ fake_class = fmt::format("_internalNA{}", next_number); @@ -135,7 +135,7 @@ ScriptController::ScriptController(::CompanyID company) : sq_newslot(vm, -3, SQFalse); sq_pop(vm, 1); - controller->loaded_library[library_name] = fake_class; + controller.loaded_library[library_name] = fake_class; } /* Find the real class inside the fake class (like 'sets.Vector') */ diff --git a/src/script/script_instance.hpp b/src/script/script_instance.hpp index 247d89363a..d12a9140ab 100644 --- a/src/script/script_instance.hpp +++ b/src/script/script_instance.hpp @@ -146,7 +146,11 @@ public: /** * Get the controller attached to the instance. */ - class ScriptController *GetController() { return controller; } + class ScriptController &GetController() + { + assert(this->controller != nullptr); + return *this->controller; + } /** * Return the "this script died" value