diff --git a/src/p_secnodes.cpp b/src/p_secnodes.cpp index 14d354a7f8..38a9a5babd 100644 --- a/src/p_secnodes.cpp +++ b/src/p_secnodes.cpp @@ -24,6 +24,7 @@ #include "r_state.h" #include "p_maputl.h" #include "p_blockmap.h" +#include "memarena.h" //============================================================================= // phares 3/21/98 @@ -32,6 +33,7 @@ //============================================================================= msecnode_t *headsecnode = NULL; +FMemArena secnodearena; //============================================================================= // @@ -53,7 +55,8 @@ msecnode_t *P_GetSecnode() } else { - node = (msecnode_t *)M_Malloc(sizeof(*node)); + node = + node = (msecnode_t *)secnodearena.Alloc(sizeof(*node)); } return node; } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 63cc7d4d69..7a026e172e 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -3557,6 +3557,7 @@ void P_FreeLevelData () P_ClearUDMFKeys(); } +extern FMemArena secnodearena; extern msecnode_t *headsecnode; void P_FreeExtraLevelData() @@ -3574,19 +3575,11 @@ void P_FreeExtraLevelData() } FBlockNode::FreeBlocks = NULL; } - { - msecnode_t *node = headsecnode; - - while (node != NULL) - { - msecnode_t *next = node->m_snext; - M_Free (node); - node = next; - } - headsecnode = NULL; - } + secnodearena.FreeAllBlocks(); + headsecnode = nullptr; } + // // P_SetupLevel //