fix crash - bug in savegame

This commit is contained in:
Ondrej Novak 2025-02-09 10:59:13 +01:00
parent e78b79bbd8
commit 5746bed249
2 changed files with 5 additions and 5 deletions

View file

@ -685,7 +685,7 @@ static int process_with_params(const char *cmd, const char *args) {
if (istrcmp(cmd, "portal-jump") == 0) { if (istrcmp(cmd, "portal-jump") == 0) {
if (check_file_exists(build_pathname(2,gpathtable[SR_MAP], args))) { if (check_file_exists(build_pathname(2,gpathtable[SR_MAP], args))) {
TMA_LOADLEV lev; TMA_LOADLEV lev;
strcopy_n(lev.name,args,12); strcopy_n(lev.name,args,sizeof(lev.name));
lev.start_pos = 0; lev.start_pos = 0;
macro_load_another_map(&lev); macro_load_another_map(&lev);
return 1; return 1;

View file

@ -67,7 +67,7 @@ typedef struct s_save
int32_t glob_flags; int32_t glob_flags;
int32_t game_time; int32_t game_time;
char runes[5]; char runes[5];
char level_name[12]; char level_name[13];
short picks; //pocet_sebranych predmetu v mysi short picks; //pocet_sebranych predmetu v mysi
short items_added; //pocet_pridanych predmetu short items_added; //pocet_pridanych predmetu
int sleep_long; int sleep_long;
@ -623,7 +623,7 @@ int save_basic_info()
s.out_filter=get_snd_effect(SND_OUTFILTER); s.out_filter=get_snd_effect(SND_OUTFILTER);
s.autosave=autosave_enabled; s.autosave=autosave_enabled;
s.game_flags=(enable_glmap!=0); s.game_flags=(enable_glmap!=0);
strcopy_n(s.level_name,level_fname,12); strcopy_n(s.level_name,level_fname,sizeof(s.level_name));
for(i=0;i<5;i++) s.runes[i]=runes[i]; for(i=0;i<5;i++) s.runes[i]=runes[i];
if (picked_item!=NULL) if (picked_item!=NULL)
for(i=1,p=picked_item;*p;i++,p++);else i=0; for(i=1,p=picked_item;*p;i++,p++);else i=0;
@ -710,9 +710,9 @@ int load_basic_info()
set_snd_effect(SND_LSWAP,s.stereing); set_snd_effect(SND_LSWAP,s.stereing);
set_snd_effect(SND_SWAP,s.swapchans); set_snd_effect(SND_SWAP,s.swapchans);
set_snd_effect(SND_OUTFILTER,s.out_filter); set_snd_effect(SND_OUTFILTER,s.out_filter);
if (level_fname==NULL || strncmp(s.level_name,level_fname,12)) if (level_fname==NULL || strcmp(s.level_name,level_fname))
{ {
strcopy_n(loadlevel.name,s.level_name,12); strcopy_n(loadlevel.name,s.level_name,sizeof(loadlevel.name));
loadlevel.start_pos=viewsector; loadlevel.start_pos=viewsector;
loadlevel.dir=viewdir; loadlevel.dir=viewdir;
send_message(E_CLOSE_MAP); send_message(E_CLOSE_MAP);