fix a lot of memory leaks that were exposed by unit tests.

This commit is contained in:
Enno Rehling 2017-09-02 17:36:09 +02:00
parent 71ced993e2
commit 30b0b2ad81
4 changed files with 6 additions and 2 deletions

View File

@ -991,6 +991,7 @@ void free_construction(struct construction *cons)
{ {
while (cons) { while (cons) {
construction *next = cons->improvement; construction *next = cons->improvement;
free(cons->name);
free(cons->materials); free(cons->materials);
free(cons); free(cons);
cons = next; cons = next;

View File

@ -517,6 +517,7 @@ static int icache_size;
#define ICACHE_MAX 100 #define ICACHE_MAX 100
void item_done(void) { void item_done(void) {
icache_size = ICACHE_MAX;
i_freeall(&icache); i_freeall(&icache);
icache_size = 0; icache_size = 0;
} }
@ -951,7 +952,7 @@ void write_items(struct storage *store, item * ilist)
static void free_itype(item_type *itype) { static void free_itype(item_type *itype) {
assert(itype); assert(itype);
free(itype->construction); free_construction(itype->construction);
free(itype->_appearance[0]); free(itype->_appearance[0]);
free(itype->_appearance[1]); free(itype->_appearance[1]);
free(itype); free(itype);

View File

@ -27,11 +27,12 @@ static void test_resources(CuTest *tc) {
rtype = rt_get_or_create("stone"); rtype = rt_get_or_create("stone");
CuAssertPtrEquals(tc, (void *)rtype, (void *)rt_find("stone")); CuAssertPtrEquals(tc, (void *)rtype, (void *)rt_find("stone"));
CuAssertPtrEquals(tc, (void *)rtype, (void *)get_resourcetype(R_STONE)); CuAssertPtrEquals(tc, (void *)rtype, (void *)get_resourcetype(R_STONE));
test_cleanup(); free_resources();
CuAssertPtrEquals(tc, 0, rt_find("stone")); CuAssertPtrEquals(tc, 0, rt_find("stone"));
CuAssertPtrEquals(tc, 0, rt_find("peasant")); CuAssertPtrEquals(tc, 0, rt_find("peasant"));
rtype = rt_get_or_create("stone"); rtype = rt_get_or_create("stone");
CuAssertPtrEquals(tc, (void *)rtype, (void *)get_resourcetype(R_STONE)); CuAssertPtrEquals(tc, (void *)rtype, (void *)get_resourcetype(R_STONE));
test_cleanup();
} }
CuSuite *get_tests_suite(void) CuSuite *get_tests_suite(void)

View File

@ -9,6 +9,7 @@ static void test_mt_new(CuTest *tc)
message_type *mt; message_type *mt;
test_setup(); test_setup();
mt = mt_new_va("test", "name:string", "number:int", NULL); mt = mt_new_va("test", "name:string", "number:int", NULL);
mt_register(mt);
CuAssertPtrNotNull(tc, mt); CuAssertPtrNotNull(tc, mt);
CuAssertStrEquals(tc, "test", mt->name); CuAssertStrEquals(tc, "test", mt->name);
CuAssertIntEquals(tc, 2, mt->nparameters); CuAssertIntEquals(tc, 2, mt->nparameters);