diff --git a/common/main/mission.h b/common/main/mission.h index 4552bf35b..777998905 100644 --- a/common/main/mission.h +++ b/common/main/mission.h @@ -85,7 +85,7 @@ struct Mission { std::unique_ptr secret_level_table; // originating level no for each secret level // arrays of names of the level files d_fname *level_names; - d_fname *secret_level_names; + std::unique_ptr secret_level_names; ubyte last_level; sbyte last_secret_level; ubyte n_secret_levels; diff --git a/similar/main/mission.cpp b/similar/main/mission.cpp index 48abf8281..f82b55cae 100644 --- a/similar/main/mission.cpp +++ b/similar/main/mission.cpp @@ -87,7 +87,7 @@ static int allocate_levels(void) { N_secret_levels = -Last_secret_level; - MALLOC(Secret_level_names, d_fname, N_secret_levels); + Secret_level_names.reset(new d_fname[N_secret_levels]); if (!Secret_level_names) return 0; @@ -609,8 +609,6 @@ void free_mission(std::unique_ptr Current_mission) if (Level_names) d_free(Level_names); - if(Secret_level_names) - d_free(Secret_level_names); } } @@ -781,7 +779,7 @@ static int load_mission(mle *mission) Ending_text_filename = {}; Secret_level_table.reset(); Level_names = NULL; - Secret_level_names = NULL; + Secret_level_names.reset(); // for Descent 1 missions, load descent.hog #if defined(DXX_BUILD_DESCENT_II) @@ -928,7 +926,7 @@ static int load_mission(mle *mission) Assert(N_secret_levels <= MAX_SECRET_LEVELS_PER_MISSION); N_secret_levels = min(N_secret_levels, MAX_SECRET_LEVELS_PER_MISSION); - MALLOC(Secret_level_names, d_fname, N_secret_levels); + Secret_level_names.reset(new d_fname[N_secret_levels]); if (!Secret_level_names) { Current_mission.reset();