mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 22:25:04 +00:00
global: free the error message when exiting a thread
When we free the global state at thread termination, we must also free the error message in order not to leak the string once per thread.
This commit is contained in:
parent
31e752b654
commit
fdea219a86
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user