From 0ac30c65a1b7830f3ba553ef89d82ee9bbfaa67a Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 28 Aug 2016 18:15:00 +0100 Subject: [PATCH] refactoring prior to removing static variable --- src/kernel/race.h | 2 ++ src/kernel/unit.c | 3 ++- src/kernel/xmlreader.c | 2 +- src/names.h | 1 - src/names.test.c | 5 +++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/kernel/race.h b/src/kernel/race.h index a106249f8..775ac55a5 100644 --- a/src/kernel/race.h +++ b/src/kernel/race.h @@ -119,6 +119,8 @@ extern "C" { extern int num_races; + typedef const char *(*race_name_func)(const struct unit *); + typedef struct race { char *_name; float magres; diff --git a/src/kernel/unit.c b/src/kernel/unit.c index 47e4a63b4..98d635d87 100644 --- a/src/kernel/unit.c +++ b/src/kernel/unit.c @@ -1416,7 +1416,8 @@ void name_unit(unit * u) if (u_race(u)->generate_name) { const char *gen_name = u_race(u)->generate_name(u); if (gen_name) { - unit_setname(u, gen_name); + free(u->_name); + u->_name = _strdup(gen_name); } else { unit_setname(u, racename(u->faction->locale, u, u_race(u))); diff --git a/src/kernel/xmlreader.c b/src/kernel/xmlreader.c index da8014d67..e944471f8 100644 --- a/src/kernel/xmlreader.c +++ b/src/kernel/xmlreader.c @@ -1797,7 +1797,7 @@ static int parse_races(xmlDocPtr doc) } assert(propValue != NULL); if (strcmp((const char *)propValue, "name") == 0) { - rc->generate_name = (const char *(*)(const struct unit *))fun; + rc->generate_name = (race_name_func)fun; } else if (strcmp((const char *)propValue, "describe") == 0) { rc->describe = diff --git a/src/names.h b/src/names.h index 76e7c9497..63e9c8628 100644 --- a/src/names.h +++ b/src/names.h @@ -23,7 +23,6 @@ extern "C" { #endif struct unit; - typedef const char *(*name_func)(const struct unit *); void register_names(void); const char *abkz(const char *s, char *buf, size_t size, size_t maxchars); diff --git a/src/names.test.c b/src/names.test.c index 99c1663ed..7c3c24506 100644 --- a/src/names.test.c +++ b/src/names.test.c @@ -2,6 +2,7 @@ #include "names.h" +#include #include #include @@ -10,14 +11,14 @@ static void test_names(CuTest * tc) { - name_func foo; + race_name_func foo; test_cleanup(); register_names(); default_locale = test_create_locale(); locale_setstring(default_locale, "undead_prefix_0", "Kleine"); locale_setstring(default_locale, "undead_name_0", "Graue"); locale_setstring(default_locale, "undead_postfix_0", "Kobolde"); - CuAssertPtrNotNull(tc, foo = (name_func)get_function("nameundead")); + CuAssertPtrNotNull(tc, foo = (race_name_func)get_function("nameundead")); CuAssertStrEquals(tc, "Kleine Graue Kobolde", foo(NULL)); CuAssertPtrNotNull(tc, get_function("nameskeleton")); CuAssertPtrNotNull(tc, get_function("namezombie"));