From 697ef5c32af82f3b03968dd3cfcda8950da5a799 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 15 Apr 2023 19:11:14 +0000 Subject: [PATCH] Use std::array for last_palette_loaded_pig --- common/main/gamepal.h | 3 ++- d2x-rebirth/main/gamepal.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/common/main/gamepal.h b/common/main/gamepal.h index 9cce8a77f..a1f45a50c 100644 --- a/common/main/gamepal.h +++ b/common/main/gamepal.h @@ -24,6 +24,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #pragma once +#include #include namespace dcx { @@ -55,7 +56,7 @@ enum class load_palette_change_screen : bool extern char last_palette_loaded[FILENAME_LEN]; extern PHYSFSX_gets_line_t Current_level_palette; -extern char last_palette_loaded_pig[FILENAME_LEN]; +extern std::array last_palette_loaded_pig; // load a palette by name. returns 1 if new palette loaded, else 0 // if used_for_level is set, load pig, etc. diff --git a/d2x-rebirth/main/gamepal.cpp b/d2x-rebirth/main/gamepal.cpp index c77bc4546..7973c244d 100644 --- a/d2x-rebirth/main/gamepal.cpp +++ b/d2x-rebirth/main/gamepal.cpp @@ -45,13 +45,13 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. namespace dsx { char last_palette_loaded[FILENAME_LEN]=""; -char last_palette_loaded_pig[FILENAME_LEN]=""; +std::array last_palette_loaded_pig; //special hack to tell that palette system about a pig that's been loaded elsewhere void load_palette_for_pig(const std::span name) { /* Never write to the last byte, so that the array is always null terminated. */ - std::memcpy(last_palette_loaded_pig, name.data(), std::min(name.size(), sizeof(last_palette_loaded_pig) - 1)); + std::memcpy(last_palette_loaded_pig.data(), name.data(), std::min(name.size(), last_palette_loaded_pig.size() - 1)); } //load a palette by name. returns 1 if new palette loaded, else 0 @@ -63,7 +63,7 @@ int load_palette(const std::span name, const load_palette_use used_f char pigname[FILENAME_LEN]; palette_array_t old_pal; - if (used_for_level != load_palette_use::background && strcmp(last_palette_loaded_pig, name.data()) != 0) + if (used_for_level != load_palette_use::background && strcmp(last_palette_loaded_pig.data(), name.data()) != 0) { const auto path = d_splitpath(name.data()); snprintf(pigname, sizeof(pigname), "%.*s.pig", DXX_ptrdiff_cast_int(path.base_end - path.base_start), path.base_start); @@ -96,9 +96,9 @@ int load_palette(const std::span name, const load_palette_use used_f } - if (used_for_level != load_palette_use::background && strcmp(last_palette_loaded_pig, name.data()) != 0) + if (used_for_level != load_palette_use::background && strcmp(last_palette_loaded_pig.data(), name.data()) != 0) { - std::memcpy(last_palette_loaded_pig, name.data(), std::min(name.size(), sizeof(last_palette_loaded_pig) - 1)); + std::memcpy(last_palette_loaded_pig.data(), name.data(), std::min(name.size(), last_palette_loaded_pig.size() - 1)); #if DXX_USE_EDITOR piggy_new_pigfile(pigname);