From a177756b34e7fe9472ec9a6a92805add70cd6815 Mon Sep 17 00:00:00 2001 From: Carlos Martin Nieto Date: Fri, 18 Mar 2016 13:00:27 -0700 Subject: win32: free thread-local data on thread exit --- src/global.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/global.c b/src/global.c index c725b5184..adf353d35 100644 --- a/src/global.c +++ b/src/global.c @@ -224,6 +224,20 @@ void git__free_tls_data(void) TlsSetValue(_tls_index, NULL); } +BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved) +{ + /* This is how Windows lets us know our thread is being shut down */ + if (fdwReason == DLL_THREAD_DETACH) { + git__free_tls_data(); + } + + /* + * Windows pays attention to this during library loading. We don't do anything + * so we trivially succeed. + */ + return TRUE; +} + #elif defined(GIT_THREADS) && defined(_POSIX_THREADS) static pthread_key_t _tls_key; -- cgit v1.2.1