From 023708f45d44ea5e43f471e5d434cd1b9d0010b7 Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Fri, 8 Dec 2017 01:04:43 -0500 Subject: [PATCH] deal with double free() errors on shutdown --- src/mission/missioncampaign.cpp | 11 ++++++++++- src/ship/ship.cpp | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mission/missioncampaign.cpp b/src/mission/missioncampaign.cpp index 985e5bf..2167bad 100644 --- a/src/mission/missioncampaign.cpp +++ b/src/mission/missioncampaign.cpp @@ -1456,39 +1456,48 @@ void mission_campaign_close() { int i; - if (Campaign.desc) + if (Campaign.desc) { free(Campaign.desc); + Campaign.desc = NULL; + } // be sure to remove all old malloced strings of Mission_names // we must also free any goal stuff that was from a previous campaign for ( i=0; i 0 ){ free ( Campaign.missions[i].goals ); + Campaign.missions[i].goals = NULL; } if ( Campaign.missions[i].num_events > 0 ){ free ( Campaign.missions[i].events ); + Campaign.missions[i].events = NULL; } // the next three are strdup'd return values from parselo.cpp if (Campaign.missions[i].mission_loop_desc) { free(Campaign.missions[i].mission_loop_desc); + Campaign.missions[i].mission_loop_desc = NULL; } if (Campaign.missions[i].mission_loop_brief_anim) { free(Campaign.missions[i].mission_loop_brief_anim); + Campaign.missions[i].mission_loop_brief_anim = NULL; } if (Campaign.missions[i].mission_loop_brief_sound) { free(Campaign.missions[i].mission_loop_brief_sound); + Campaign.missions[i].mission_loop_brief_sound = NULL; } if ( !Fred_running ){ diff --git a/src/ship/ship.cpp b/src/ship/ship.cpp index 27eb93a..f3d8019 100644 --- a/src/ship/ship.cpp +++ b/src/ship/ship.cpp @@ -7023,6 +7023,7 @@ void ship_close() for ( i = 0; i < Num_ship_types; i++ ) { if ( Ship_info[i].subsystems != NULL ) { free(Ship_info[i].subsystems); + Ship_info[i].subsystems = NULL; } } -- 2.39.2