From 4313460da7c0ed35fd6d93c16133a03f5f617552 Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Fri, 1 Dec 2017 06:19:09 +0000 Subject: [PATCH] Bump savegame name limits from 22 in memory and 19 in practice to 32 in memory and 30 in practice. This bumps SV_MINOR_VER. git-svn-id: https://svn.eduke32.com/eduke32@6529 1a8010ca-5511-0410-912e-c29ae57300e0 --- source/duke3d/src/game.cpp | 6 +++--- source/duke3d/src/game.h | 5 +++-- source/duke3d/src/menus.cpp | 14 +++++++------- source/duke3d/src/savegame.cpp | 4 ---- source/duke3d/src/savegame.h | 12 ++---------- 5 files changed, 15 insertions(+), 26 deletions(-) diff --git a/source/duke3d/src/game.cpp b/source/duke3d/src/game.cpp index 9f8e3ed03..0d32f48d3 100644 --- a/source/duke3d/src/game.cpp +++ b/source/duke3d/src/game.cpp @@ -4850,10 +4850,10 @@ FAKE_F3: if (g_lastSaveSlot >= 0) { // dirty hack... char 127 in last position indicates an auto-filled name - if (ud.savegame[g_lastSaveSlot][MAXSAVEGAMENAME-2] == 127) + if (ud.savegame[g_lastSaveSlot][MAXSAVEGAMENAME] == 127) { - Bstrncpy(&ud.savegame[g_lastSaveSlot][0], g_mapInfo[ud.volume_number * MAXLEVELS + ud.level_number].name, 19); - ud.savegame[g_lastSaveSlot][MAXSAVEGAMENAME-2] = 127; + Bstrncpy(&ud.savegame[g_lastSaveSlot][0], g_mapInfo[ud.volume_number * MAXLEVELS + ud.level_number].name, MAXSAVEGAMENAME); + ud.savegame[g_lastSaveSlot][MAXSAVEGAMENAME] = 127; } G_SavePlayerMaybeMulti(g_lastSaveSlot); diff --git a/source/duke3d/src/game.h b/source/duke3d/src/game.h index 7c614436a..9a4883aff 100644 --- a/source/duke3d/src/game.h +++ b/source/duke3d/src/game.h @@ -130,7 +130,8 @@ extern camera_t g_camera; #define MAXRIDECULE 10 #define MAXRIDECULELENGTH 40 #define MAXSAVEGAMES 10 -#define MAXSAVEGAMENAME 22 +#define MAXSAVEGAMENAMESTRUCT 32 +#define MAXSAVEGAMENAME (MAXSAVEGAMENAMESTRUCT-1) #define MAXPWLOCKOUT 128 #define MAXRTSNAME 128 @@ -234,7 +235,7 @@ typedef struct { char god,warp_on,cashman,eog,showallmap; char show_help,scrollmode,noclip; char ridecule[MAXRIDECULE][MAXRIDECULELENGTH]; - char savegame[MAXSAVEGAMES][MAXSAVEGAMENAME]; + char savegame[MAXSAVEGAMES][MAXSAVEGAMENAMESTRUCT]; char pwlockout[MAXPWLOCKOUT],rtsname[MAXRTSNAME]; char display_bonus_screen; char show_level_text; diff --git a/source/duke3d/src/menus.cpp b/source/duke3d/src/menus.cpp index bef703617..44a5cccf9 100644 --- a/source/duke3d/src/menus.cpp +++ b/source/duke3d/src/menus.cpp @@ -3145,7 +3145,7 @@ static void Menu_EntryStringActivate(/*MenuEntry_t *entry*/) { case MENU_SAVE: if (!save_xxh) - save_xxh = XXH32((uint8_t *)&ud.savegame[M_SAVE.currentEntry][0], 19, 0xDEADBEEF); + save_xxh = XXH32((uint8_t *)&ud.savegame[M_SAVE.currentEntry][0], MAXSAVEGAMENAME, 0xDEADBEEF); if (ud.savegame[M_SAVE.currentEntry][0]) Menu_Change(MENU_SAVEVERIFY); break; @@ -3167,18 +3167,18 @@ static int32_t Menu_EntryStringSubmit(MenuEntry_t *entry, char *input) #ifdef __ANDROID__ if (1) #else - if (input[0] == 0 || (ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME-2] == 127 && - Bstrncmp(&ud.savegame[M_SAVE.currentEntry][0], input, MAXSAVEGAMENAME-3) == 0 && - save_xxh == XXH32((uint8_t *)&ud.savegame[M_SAVE.currentEntry][0], MAXSAVEGAMENAME-3, 0xDEADBEEF))) + if (input[0] == 0 || (ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME] == 127 && + Bstrncmp(&ud.savegame[M_SAVE.currentEntry][0], input, MAXSAVEGAMENAME) == 0 && + save_xxh == XXH32((uint8_t *)&ud.savegame[M_SAVE.currentEntry][0], MAXSAVEGAMENAME, 0xDEADBEEF))) #endif { - Bstrncpy(&ud.savegame[M_SAVE.currentEntry][0], g_mapInfo[ud.volume_number * MAXLEVELS + ud.level_number].name, MAXSAVEGAMENAME-3); - ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME-2] = 127; + Bstrncpy(&ud.savegame[M_SAVE.currentEntry][0], g_mapInfo[ud.volume_number * MAXLEVELS + ud.level_number].name, MAXSAVEGAMENAME); + ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME] = 127; returnvar = -1; } else { - ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME-2] = 0; + ud.savegame[M_SAVE.currentEntry][MAXSAVEGAMENAME] = 0; Bstrncpy(object->variable, input, object->maxlength); } diff --git a/source/duke3d/src/savegame.cpp b/source/duke3d/src/savegame.cpp index 0978d3fb2..da9196755 100644 --- a/source/duke3d/src/savegame.cpp +++ b/source/duke3d/src/savegame.cpp @@ -1277,8 +1277,6 @@ static void SV_AllocSnap(int32_t allocinit) svdiff = (uint8_t *)Xmalloc(svdiffsiz); } -EDUKE32_STATIC_ASSERT(sizeof(savehead_t) == SAVEHEAD_SIZE); - // make snapshot only if spot < 0 (demo) int32_t sv_saveandmakesnapshot(FILE *fil, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress) { @@ -1416,8 +1414,6 @@ int32_t sv_saveandmakesnapshot(FILE *fil, int8_t spot, int8_t recdiffsp, int8_t return 0; } -EDUKE32_STATIC_ASSERT(sizeof(savehead_t) == SAVEHEAD_SIZE); - // if file is not an EDuke32 savegame/demo, h->headerstr will be all zeros int32_t sv_loadheader(int32_t fil, int32_t spot, savehead_t *h) { diff --git a/source/duke3d/src/savegame.h b/source/duke3d/src/savegame.h index 021b359e2..f00a89117 100644 --- a/source/duke3d/src/savegame.h +++ b/source/duke3d/src/savegame.h @@ -34,7 +34,7 @@ extern "C" { #else # define SV_MAJOR_VER 1 #endif -#define SV_MINOR_VER 3 +#define SV_MINOR_VER 4 #pragma pack(push,1) typedef struct @@ -51,7 +51,7 @@ typedef struct int32_t reccnt, snapsiz; // 8 bytes - char savename[MAXSAVEGAMENAME]; + char savename[MAXSAVEGAMENAMESTRUCT]; uint8_t numplayers, volnum, levnum, skill; char boardfn[BMAX_PATH]; // 282 bytes @@ -61,14 +61,6 @@ typedef struct } savehead_t; #pragma pack(pop) -#ifdef __ANDROID__ -#define SAVEHEAD_SIZE 374 -#else -#define SAVEHEAD_SIZE 310 -#endif - -EDUKE32_STATIC_ASSERT(sizeof(savehead_t) == SAVEHEAD_SIZE); - int32_t sv_updatestate(int32_t frominit); int32_t sv_readdiff(int32_t fil); uint32_t sv_writediff(FILE *fil);