diff --git a/common/main/mission.h b/common/main/mission.h index 03a3d6385..10e96700a 100644 --- a/common/main/mission.h +++ b/common/main/mission.h @@ -94,19 +94,10 @@ struct Mission { ubyte enhanced; // 0: mission has "name", 1:"xname", 2:"zname" std::unique_ptr alternate_ham_file; #endif + ~Mission(); }; -void free_mission(std::unique_ptr); - -struct mission_delete -{ - void operator()(Mission *p) const - { - free_mission(std::unique_ptr(p)); - } -}; - -typedef std::unique_ptr Mission_ptr; +typedef std::unique_ptr Mission_ptr; extern Mission_ptr Current_mission; // current mission #define Current_mission_longname Current_mission->mission_name diff --git a/similar/main/mission.cpp b/similar/main/mission.cpp index a0f58bcae..2d334724b 100644 --- a/similar/main/mission.cpp +++ b/similar/main/mission.cpp @@ -587,22 +587,19 @@ static void promote (mle *mission_list, const char * mission_name, int * top_pla } } -void free_mission(std::unique_ptr Current_mission) +Mission::~Mission() { // May become more complex with the editor - if (Current_mission) - { - if (Current_mission->path && !PLAYING_BUILTIN_MISSION) + if (path && !PLAYING_BUILTIN_MISSION) { char hogpath[PATH_MAX]; - sprintf(hogpath, MISSION_DIR "%s.hog", Current_mission->path); + snprintf(hogpath, sizeof(hogpath), MISSION_DIR "%s.hog", path); PHYSFSX_contfile_close(hogpath); } - if (Current_mission->path) - d_free(Current_mission->path); - } + if (path) + d_free(path); }