diff options
author | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-23 14:41:56 +0400 |
---|---|---|
committer | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-23 14:41:56 +0400 |
commit | 9094d30b932ca4b47dba81e76011efe05455a44a (patch) | |
tree | 117c53e9ad194d00274ad98e784318bd960c4053 /tests-clar/stash | |
parent | 5cf1b4f094eb6f724b27aa01d4f0481de2e673af (diff) |
Reset all static variables to NULL in clar's __cleanup
Without this change, any failed assertion in the second (or a later) test
inside a test suite has a chance of double deleting memory, resulting in
a heap corruption. See #1096 for details.
This leaves alone the test cases where we "just" use cl_git_sandbox_init()
and cl_git_sandbox_cleanup(). These methods already take good care to not
double delete a repository.
Fixes #1096
Diffstat (limited to 'tests-clar/stash')
-rw-r--r-- | tests-clar/stash/drop.c | 4 | ||||
-rw-r--r-- | tests-clar/stash/foreach.c | 4 | ||||
-rw-r--r-- | tests-clar/stash/save.c | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/tests-clar/stash/drop.c b/tests-clar/stash/drop.c index b4f73b995..9d1aeda70 100644 --- a/tests-clar/stash/drop.c +++ b/tests-clar/stash/drop.c @@ -14,7 +14,11 @@ void test_stash_drop__initialize(void) void test_stash_drop__cleanup(void) { git_signature_free(signature); + signature = NULL; + git_repository_free(repo); + repo = NULL; + cl_git_pass(git_futils_rmdir_r("stash", NULL, GIT_RMDIR_REMOVE_FILES)); } diff --git a/tests-clar/stash/foreach.c b/tests-clar/stash/foreach.c index d7127a9db..c7d59a3a1 100644 --- a/tests-clar/stash/foreach.c +++ b/tests-clar/stash/foreach.c @@ -29,7 +29,11 @@ void test_stash_foreach__initialize(void) void test_stash_foreach__cleanup(void) { git_signature_free(signature); + signature = NULL; + git_repository_free(repo); + repo = NULL; + cl_git_pass(git_futils_rmdir_r(REPO_NAME, NULL, GIT_RMDIR_REMOVE_FILES)); } diff --git a/tests-clar/stash/save.c b/tests-clar/stash/save.c index fadb8940b..4eaf2a3c1 100644 --- a/tests-clar/stash/save.c +++ b/tests-clar/stash/save.c @@ -26,7 +26,11 @@ void test_stash_save__initialize(void) void test_stash_save__cleanup(void) { git_signature_free(signature); + signature = NULL; + git_repository_free(repo); + repo = NULL; + cl_git_pass(git_futils_rmdir_r("stash", NULL, GIT_RMDIR_REMOVE_FILES)); } |