From fa64fff4a524f073aca1317c4609b240e6a993eb Mon Sep 17 00:00:00 2001 From: SamuXarick <43006711+SamuXarick@users.noreply.github.com> Date: Sun, 11 Feb 2024 21:09:23 +0000 Subject: [PATCH] Fix #10405, a3dd750: [Script] Test engine and vehicle type validity for ScriptGroup::GetNumEngines (#11887) --- src/script/api/script_group.cpp | 5 ++++- src/script/api/script_group.hpp | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp index 62888ac0af..427aa48cb5 100644 --- a/src/script/api/script_group.cpp +++ b/src/script/api/script_group.cpp @@ -111,7 +111,10 @@ /* static */ SQInteger ScriptGroup::GetNumEngines(GroupID group_id, EngineID engine_id) { EnforceCompanyModeValid(-1); - if (!IsValidGroup(group_id) && group_id != GROUP_DEFAULT && group_id != GROUP_ALL) return -1; + if (!ScriptEngine::IsValidEngine(engine_id)) return -1; + bool valid_group = IsValidGroup(group_id); + if (!valid_group && group_id != GROUP_DEFAULT && group_id != GROUP_ALL) return -1; + if (valid_group && ScriptEngine::GetVehicleType(engine_id) != GetVehicleType(group_id)) return -1; return GetGroupNumEngines(ScriptObject::GetCompany(), group_id, engine_id); } diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp index 9971525765..153fff3279 100644 --- a/src/script/api/script_group.hpp +++ b/src/script/api/script_group.hpp @@ -128,7 +128,9 @@ public: * Get the number of engines in a given group. * @param group_id The group to get the number of engines in. * @param engine_id The engine id to count. - * @pre IsValidGroup(group_id) || group_id == GROUP_ALL || group_id == GROUP_DEFAULT. + * @pre ScriptEngine::IsValidEngine(engine_id). + * @pre (IsValidGroup(group_id) && ScriptEngine::GetVehicleType(engine_id) == GetVehicleType(group_id)) || + group_id == GROUP_ALL || group_id == GROUP_DEFAULT. * @game @pre ScriptCompanyMode::IsValid(). * @return The number of engines with id engine_id in the group with id group_id. */