From 44d982d210685b00fd1d962788efe7ebc38f5b0d Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sat, 12 Sep 2015 12:29:42 +0200 Subject: [PATCH] free race prefixes when the game is done (small memory leak). --- src/kernel/config.c | 2 ++ src/prefix.c | 11 +++++++++++ src/prefix.h | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/kernel/config.c b/src/kernel/config.c index 747bfad80..057c3efc0 100644 --- a/src/kernel/config.c +++ b/src/kernel/config.c @@ -74,6 +74,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "donations.h" +#include "prefix.h" #ifdef USE_LIBXML2 /* libxml includes */ @@ -1767,6 +1768,7 @@ void free_gamedata(void) free_units(); free_regions(); free_borders(); + free_prefixes(); for (i = 0; i != MAXLOCALES; ++i) { if (defaults[i]) { diff --git a/src/prefix.c b/src/prefix.c index d94dbb3dd..072e573ae 100644 --- a/src/prefix.c +++ b/src/prefix.c @@ -19,3 +19,14 @@ void add_raceprefix(const char *prefix) race_prefixes[next++] = _strdup(prefix); race_prefixes[next] = NULL; } + +void free_prefixes(void) { + int i; + if (race_prefixes) { + for (i = 0; race_prefixes[i]; ++i) { + free(race_prefixes[i]); + } + free(race_prefixes); + race_prefixes = 0; + } +} diff --git a/src/prefix.h b/src/prefix.h index 0b5bdcbe0..9c5b84907 100644 --- a/src/prefix.h +++ b/src/prefix.h @@ -8,7 +8,8 @@ extern "C" { #endif void add_raceprefix(const char *); - char **race_prefixes; + char **race_prefixes; // zero-terminated array of valid prefixes + void free_prefixes(void); #ifdef __cplusplus }