mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
Fix savemapstate/loadmapstate (fixes a crash at shutdown, among other things)
git-svn-id: https://svn.eduke32.com/eduke32@4923 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
b3358a90b2
commit
bd27267b6b
3 changed files with 12 additions and 9 deletions
|
@ -5432,7 +5432,10 @@ void G_SaveMapState(void)
|
|||
map_t *mapinfo = &MapInfo[levelnum];
|
||||
|
||||
if (mapinfo->savedstate == NULL)
|
||||
mapinfo->savedstate = (mapstate_t *)Xcalloc(1,sizeof(mapstate_t));
|
||||
{
|
||||
mapinfo->savedstate = (mapstate_t *) Xaligned_alloc(16, sizeof(mapstate_t));
|
||||
Bmemset(mapinfo->savedstate, 0, sizeof(mapstate_t));
|
||||
}
|
||||
|
||||
mapstate_t *save = mapinfo->savedstate;
|
||||
|
||||
|
@ -5513,13 +5516,13 @@ void G_SaveMapState(void)
|
|||
if (aGameVars[i].dwFlags & GAMEVAR_PERPLAYER)
|
||||
{
|
||||
if (!save->vars[i])
|
||||
save->vars[i] = (intptr_t *)Xcalloc(MAXPLAYERS,sizeof(intptr_t));
|
||||
save->vars[i] = (intptr_t *)Xaligned_alloc(16, MAXPLAYERS * sizeof(intptr_t));
|
||||
Bmemcpy(&save->vars[i][0],&aGameVars[i].val.plValues[0],sizeof(intptr_t) * MAXPLAYERS);
|
||||
}
|
||||
else if (aGameVars[i].dwFlags & GAMEVAR_PERACTOR)
|
||||
{
|
||||
if (!save->vars[i])
|
||||
save->vars[i] = (intptr_t *)Xcalloc(MAXSPRITES,sizeof(intptr_t));
|
||||
save->vars[i] = (intptr_t *)Xaligned_alloc(16, MAXSPRITES * sizeof(intptr_t));
|
||||
Bmemcpy(&save->vars[i][0],&aGameVars[i].val.plValues[0],sizeof(intptr_t) * MAXSPRITES);
|
||||
}
|
||||
else save->vars[i] = (intptr_t *)aGameVars[i].val.lValue;
|
||||
|
|
|
@ -1417,7 +1417,7 @@ end_vol4a:
|
|||
for (i=0; i<(MAXVOLUMES*MAXLEVELS); i++)
|
||||
if (MapInfo[i].savedstate)
|
||||
{
|
||||
Bfree(MapInfo[i].savedstate);
|
||||
Baligned_free(MapInfo[i].savedstate);
|
||||
MapInfo[i].savedstate = NULL;
|
||||
}
|
||||
|
||||
|
@ -2020,12 +2020,12 @@ void G_FreeMapState(int32_t mapnum)
|
|||
if (aGameVars[j].dwFlags & (GAMEVAR_PERPLAYER|GAMEVAR_PERACTOR))
|
||||
{
|
||||
if (mapinfo->savedstate->vars[j])
|
||||
Bfree(mapinfo->savedstate->vars[j]);
|
||||
Baligned_free(mapinfo->savedstate->vars[j]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
Bfree(mapinfo->savedstate->savecode);
|
||||
#endif
|
||||
Bfree(mapinfo->savedstate);
|
||||
Baligned_free(mapinfo->savedstate);
|
||||
mapinfo->savedstate = NULL;
|
||||
}
|
||||
|
|
|
@ -79,10 +79,10 @@ typedef struct {
|
|||
actor_t actor[MAXSPRITES];
|
||||
playerspawn_t g_playerSpawnPoints[MAXPLAYERS];
|
||||
animwalltype animwall[MAXANIMWALLS];
|
||||
sectortype sector[MAXSECTORS];
|
||||
tsectortype sector[MAXSECTORS];
|
||||
spriteext_t spriteext[MAXSPRITES];
|
||||
spritetype sprite[MAXSPRITES];
|
||||
walltype wall[MAXWALLS];
|
||||
tspritetype sprite[MAXSPRITES];
|
||||
twalltype wall[MAXWALLS];
|
||||
#if !defined LUNATIC
|
||||
intptr_t *vars[MAXGAMEVARS];
|
||||
#else
|
||||
|
|
Loading…
Reference in a new issue