diff options
author | Jeff Hostetler <jeffhost@microsoft.com> | 2015-04-17 09:30:22 -0400 |
---|---|---|
committer | Jeff Hostetler <jeffhost@microsoft.com> | 2015-04-17 09:30:22 -0400 |
commit | 55c5f756d80cb762fa21054c7460359424428668 (patch) | |
tree | 6c2f1fe3f56d9541a8be180c64253fc2d856db2e /src/global.c | |
parent | c332bb70cdf02f202f783485819f65feca953550 (diff) | |
download | libgit2-55c5f756d80cb762fa21054c7460359424428668.tar.gz |
Attempt to fix Windows TLS memory leak.
Diffstat (limited to 'src/global.c')
-rw-r--r-- | src/global.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/global.c b/src/global.c index 1f3432d09..3c97e62e6 100644 --- a/src/global.c +++ b/src/global.c @@ -270,13 +270,21 @@ git_global_st *git__global_state(void) return ptr; } +void git__free_thread_global_state(void) +{ + void *ptr = TlsGetValue(_tls_index); + if (!ptr) + return; + + git__global_state_cleanup(ptr); + git__free(ptr); + TlsSetValue(_tls_index, NULL); +} + BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, LPVOID reserved) { - if (reason == DLL_THREAD_DETACH) { - void *ptr = TlsGetValue(_tls_index); - git__global_state_cleanup(ptr); - git__free(ptr); - } + if (reason == DLL_THREAD_DETACH) + git__free_thread_global_state(); return TRUE; } |