From 7f5a3eaf830de375a8505c89f57dcf73047ae8ba Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 12 Sep 2024 06:49:45 +0100 Subject: [PATCH] Codefix: Avoid type-casting function pointer with incorrect type. (#12929) Make `AutolengthProc` take `int` instead of `void *`, avoiding pointer parameters. --- src/saveload/ai_sl.cpp | 6 +++--- src/saveload/game_sl.cpp | 4 ++-- src/saveload/saveload.cpp | 2 +- src/saveload/saveload.h | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/saveload/ai_sl.cpp b/src/saveload/ai_sl.cpp index 062d0bd090..0d8490f17f 100644 --- a/src/saveload/ai_sl.cpp +++ b/src/saveload/ai_sl.cpp @@ -41,9 +41,9 @@ static const SaveLoad _ai_running_desc[] = { SLEG_CONDVAR("running_version", _ai_saveload_version, SLE_UINT32, SLV_AI_LOCAL_CONFIG, SL_MAX_VERSION), }; -static void SaveReal_AIPL(int *index_ptr) +static void SaveReal_AIPL(int arg) { - CompanyID index = (CompanyID)*index_ptr; + CompanyID index = static_cast(arg); AIConfig *config = AIConfig::GetConfig(index, AIConfig::SSS_FORCE_GAME); if (config->HasScript()) { @@ -162,7 +162,7 @@ struct AIPLChunkHandler : ChunkHandler { for (int i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { SlSetArrayIndex(i); - SlAutolength((AutolengthProc *)SaveReal_AIPL, &i); + SlAutolength(SaveReal_AIPL, i); } } }; diff --git a/src/saveload/game_sl.cpp b/src/saveload/game_sl.cpp index 7196c5bc29..fdfce16c68 100644 --- a/src/saveload/game_sl.cpp +++ b/src/saveload/game_sl.cpp @@ -32,7 +32,7 @@ static const SaveLoad _game_script_desc[] = { SLEG_VAR("version", _game_saveload_version, SLE_UINT32), }; -static void SaveReal_GSDT(int *) +static void SaveReal_GSDT(int) { GameConfig *config = GameConfig::GetConfig(); @@ -109,7 +109,7 @@ struct GSDTChunkHandler : ChunkHandler { { SlTableHeader(_game_script_desc); SlSetArrayIndex(0); - SlAutolength((AutolengthProc *)SaveReal_GSDT, nullptr); + SlAutolength(SaveReal_GSDT, 0); } }; diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 24eb4aa54d..81852f7cf8 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -1925,7 +1925,7 @@ void SlGlobList(const SaveLoadTable &slt) * @param proc The callback procedure that is called * @param arg The variable that will be used for the callback procedure */ -void SlAutolength(AutolengthProc *proc, void *arg) +void SlAutolength(AutolengthProc *proc, int arg) { assert(_sl.action == SLA_SAVE); diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 5918b285da..01cbbda828 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -436,7 +436,7 @@ void DoAutoOrNetsave(FiosNumberedSaveName &counter); SaveOrLoadResult SaveWithFilter(std::shared_ptr writer, bool threaded); SaveOrLoadResult LoadWithFilter(std::shared_ptr reader); -typedef void AutolengthProc(void *arg); +typedef void AutolengthProc(int); /** Type of a chunk. */ enum ChunkType { @@ -1290,7 +1290,7 @@ int SlIterateArray(); void SlSetStructListLength(size_t length); size_t SlGetStructListLength(size_t limit); -void SlAutolength(AutolengthProc *proc, void *arg); +void SlAutolength(AutolengthProc *proc, int arg); size_t SlGetFieldLength(); void SlSetLength(size_t length); size_t SlCalcObjMemberLength(const void *object, const SaveLoad &sld);