diff --git a/src/kernel/order.c b/src/kernel/order.c index 90bea11d3..356fec80d 100644 --- a/src/kernel/order.c +++ b/src/kernel/order.c @@ -267,6 +267,13 @@ static void free_localedata(int lindex) { locale_array[lindex]->lang = 0; } +void close_orders(void) { + int i; + for (i = 0; i != MAXLOCALES; ++i) { + if (locale_array[i]) free_localedata(i); + } +} + static order *create_order_i(keyword_t kwd, const char *sptr, bool persistent, const struct locale *lang) { diff --git a/src/kernel/order.h b/src/kernel/order.h index 75d741e42..8ad5592b7 100644 --- a/src/kernel/order.h +++ b/src/kernel/order.h @@ -61,6 +61,8 @@ extern "C" { char *write_order(const order * ord, char *buffer, size_t size); keyword_t init_order(const struct order *ord); + void close_orders(void); + #ifdef __cplusplus } #endif diff --git a/src/tests.c b/src/tests.c index 741812590..8e4b3ef57 100644 --- a/src/tests.c +++ b/src/tests.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -79,6 +80,7 @@ void test_cleanup(void) global.functions.wage = NULL; free_params(&global.parameters); default_locale = 0; + close_orders(); free_locales(); free_spells(); free_buildingtypes();