Merge pull request #563 from ennorehling/develop

memory leak
This commit is contained in:
Enno Rehling 2016-09-10 21:05:04 +02:00 committed by GitHub
commit 4f7d1da72f
4 changed files with 32 additions and 11 deletions

20
.gitmodules vendored
View File

@ -1,31 +1,31 @@
[submodule "lunit"] [submodule "lunit"]
path = lunit path = lunit
url = git://github.com/ennorehling/lunit.git url = git@github.com:ennorehling/lunit.git
[submodule "cmake"] [submodule "cmake"]
path = cmake path = cmake
url = git://github.com/ennorehling/cmake.git url = git@github.com:ennorehling/cmake.git
[submodule "quicklist"] [submodule "quicklist"]
path = quicklist path = quicklist
url = git://github.com/ennorehling/quicklist.git url = git@github.com:ennorehling/quicklist.git
[submodule "critbit"] [submodule "critbit"]
path = critbit path = critbit
url = git://github.com/ennorehling/critbit.git url = git@github.com:ennorehling/critbit.git
[submodule "dlmalloc"] [submodule "dlmalloc"]
path = dlmalloc path = dlmalloc
url = git://github.com/ennorehling/dlmalloc.git url = git@github.com:ennorehling/dlmalloc.git
[submodule "cutest"] [submodule "cutest"]
path = cutest path = cutest
url = git://github.com/ennorehling/cutest.git url = git@github.com:ennorehling/cutest.git
[submodule "iniparser"] [submodule "iniparser"]
path = iniparser path = iniparser
url = git://github.com/ennorehling/iniparser.git url = git@github.com:ennorehling/iniparser.git
[submodule "cJSON"] [submodule "cJSON"]
path = cJSON path = cJSON
url = git://github.com/ennorehling/cJSON.git url = git@github.com:ennorehling/cJSON.git
[submodule "storage"] [submodule "storage"]
path = storage path = storage
url = git://github.com/ennorehling/storage.git url = git@github.com:ennorehling/storage.git
branch = master branch = master
[submodule "tolua"] [submodule "tolua"]
path = tolua path = tolua
url = git://github.com/ennorehling/tolua.git url = git@github.com:ennorehling/tolua.git

@ -1 +1 @@
Subproject commit 934c2dd94d41da19637a76a1a8b3dfeb7aa8524d Subproject commit 971836241277e37274aa3110344836499816ff21

View File

@ -872,6 +872,7 @@ void free_factions(void) {
while (deadhash[i]) { while (deadhash[i]) {
dead *d = deadhash[i]; dead *d = deadhash[i];
deadhash[i] = d->nexthash; deadhash[i] = d->nexthash;
free(d);
} }
} }
free_flist(&factions); free_flist(&factions);

View File

@ -191,10 +191,30 @@ static void test_set_origin_bug(CuTest *tc) {
test_cleanup(); test_cleanup();
} }
static void test_deadhash(CuTest *tc) {
faction *f;
int no;
test_setup();
f = test_create_faction(0);
no = f->no;
CuAssertPtrEquals(tc, f, findfaction(no));
CuAssertPtrEquals(tc, NULL, dfindhash(42));
dhash(41, f);
dhash(42, f);
assert(f == factions);
destroyfaction(&factions);
CuAssertPtrEquals(tc, 0, findfaction(no));
CuAssertPtrEquals(tc, f, dfindhash(42));
CuAssertPtrEquals(tc, f, dfindhash(41));
test_cleanup();
}
CuSuite *get_faction_suite(void) CuSuite *get_faction_suite(void)
{ {
CuSuite *suite = CuSuiteNew(); CuSuite *suite = CuSuiteNew();
SUITE_ADD_TEST(suite, test_addfaction); SUITE_ADD_TEST(suite, test_addfaction);
SUITE_ADD_TEST(suite, test_deadhash);
SUITE_ADD_TEST(suite, test_remove_empty_factions); SUITE_ADD_TEST(suite, test_remove_empty_factions);
SUITE_ADD_TEST(suite, test_destroyfaction_allies); SUITE_ADD_TEST(suite, test_destroyfaction_allies);
SUITE_ADD_TEST(suite, test_remove_empty_factions_alliance); SUITE_ADD_TEST(suite, test_remove_empty_factions_alliance);