diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 4485d5763e..278b67c7f9 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -3436,12 +3436,17 @@ void P_FreeLevelData () level.killed_monsters = level.found_items = level.found_secrets = wminfo.maxfrags = 0; - FBehavior::StaticUnloadModules (); - level.segs.Clear(); if (level.sectors.Size() > 0) { delete[] level.sectors[0].e; } + for (auto &sub : level.subsectors) + { + if (sub.BSP != nullptr) delete sub.BSP; + } + + FBehavior::StaticUnloadModules (); + level.segs.Clear(); level.sectors.Clear(); level.lines.Clear(); level.sides.Clear(); diff --git a/src/r_defs.h b/src/r_defs.h index 18ef9e1d30..f3c28ee84f 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -1409,7 +1409,7 @@ struct subsector_t FMiniBSP *BSP; seg_t *firstline; sector_t *render_sector; - uint32_t numlines; + uint32_t numlines; int flags; void BuildPolyBSP(); @@ -1462,7 +1462,6 @@ struct FMiniBSP TArray Verts; }; - // // OTHER TYPES //