diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2014-09-29 10:29:00 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2014-09-29 10:29:00 -0400 |
commit | ced843f417d882aa212317c722d5fed1502585b7 (patch) | |
tree | 51d152f328066f179785a960853747b46b0c6ef3 | |
parent | cb4a956b9c20f2b7be404983e7bd156c772f4f64 (diff) | |
parent | fdea219a86d12c802b8d7fa73445940770bb1b61 (diff) | |
download | libgit2-ced843f417d882aa212317c722d5fed1502585b7.tar.gz |
Merge pull request #2559 from libgit2/cmn/free-tls-error
global: free the error message when exiting a thread
-rw-r--r-- | src/global.c | 3 | ||||
-rw-r--r-- | tests/threads/basic.c | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/global.c b/src/global.c index f89c73256..4a0b680ef 100644 --- a/src/global.c +++ b/src/global.c @@ -223,6 +223,9 @@ int init_error = 0; static void cb__free_status(void *st) { + git_global_st *state = (git_global_st *) st; + git__free(state->error_t.message); + git__free(st); } diff --git a/tests/threads/basic.c b/tests/threads/basic.c index a329ee7f9..eb15293c7 100644 --- a/tests/threads/basic.c +++ b/tests/threads/basic.c @@ -1,5 +1,6 @@ #include "clar_libgit2.h" +#include "thread_helpers.h" #include "cache.h" @@ -34,3 +35,16 @@ void test_threads_basic__multiple_init(void) cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git"))); git_repository_free(nested_repo); } + +static void *set_error(void *dummy) +{ + giterr_set(GITERR_INVALID, "oh no, something happened!\n"); + + return dummy; +} + +/* Set errors so we can check that we free it */ +void test_threads_basic__set_error(void) +{ + run_in_parallel(1, 4, set_error, NULL, NULL); +} |