From d4655ee88aeafc4ec1c4f87b7ae39f1bf5c80a96 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Thu, 15 Oct 2015 08:29:20 +0200 Subject: [PATCH] leak: do not create new message_type objects in test_cleanup --- src/kernel/config.c | 4 ---- src/kernel/curse.test.c | 2 +- src/kernel/messages.c | 6 ++++++ src/tests.c | 4 ---- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/kernel/config.c b/src/kernel/config.c index e2ae97c55..19390799d 100644 --- a/src/kernel/config.c +++ b/src/kernel/config.c @@ -1597,10 +1597,6 @@ void kernel_init(void) { register_reports(); mt_clear(); - if (!mt_find("missing_message")) { - mt_register(mt_new_va("missing_message", "name:string", 0)); - mt_register(mt_new_va("missing_feedback", "unit:unit", "region:region", "command:order", "name:string", 0)); - } attrib_init(); translation_init(); } diff --git a/src/kernel/curse.test.c b/src/kernel/curse.test.c index bf9f1c85c..002ef18ec 100644 --- a/src/kernel/curse.test.c +++ b/src/kernel/curse.test.c @@ -157,6 +157,6 @@ CuSuite *get_curse_suite(void) SUITE_ADD_TEST(suite, test_good_dreams); SUITE_ADD_TEST(suite, test_bad_dreams); SUITE_ADD_TEST(suite, test_memstream); - DISABLE_TEST(suite, test_write_flag); + SUITE_ADD_TEST(suite, test_write_flag); return suite; } diff --git a/src/kernel/messages.c b/src/kernel/messages.c index 77b15ea23..779354498 100644 --- a/src/kernel/messages.c +++ b/src/kernel/messages.c @@ -91,6 +91,9 @@ struct message *msg_feedback(const struct unit *u, struct order *ord, if (!mtype) { log_error("trying to create message of unknown type \"%s\"\n", name); + if (!mt_find("missing_feedback")) { + mt_register(mt_new_va("missing_feedback", "unit:unit", "region:region", "command:order", "name:string", 0)); + } return msg_message("missing_feedback", "unit region command name", u, u->region, ord, name); } @@ -154,6 +157,9 @@ message *msg_message(const char *name, const char *sig, ...) if (!mtype) { log_warning("trying to create message of unknown type \"%s\"\n", name); if (strcmp(name, "missing_message") != 0) { + if (!mt_find("missing_message")) { + mt_register(mt_new_va("missing_message", "name:string", 0)); + } return msg_message("missing_message", "name", name); } return NULL; diff --git a/src/tests.c b/src/tests.c index 45f2036f6..347418ce5 100644 --- a/src/tests.c +++ b/src/tests.c @@ -97,10 +97,6 @@ void test_cleanup(void) for (i = 0; i != MAXKEYWORDS; ++i) { enable_keyword(i, true); } - if (!mt_find("missing_message")) { - mt_register(mt_new_va("missing_message", "name:string", 0)); - mt_register(mt_new_va("missing_feedback", "unit:unit", "region:region", "command:order", "name:string", 0)); - } if (errno) { int error = errno; errno = 0;