win32: close handles of threads that have been joined

After the thread terminates, the handle to the
original thread should be closed.

This change makes win32_pthread_join POSIX compliant.

Signed-off-by: Seija Kijin <doremylover123@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Seija Kijin 2023-01-03 16:20:19 +00:00 committed by Junio C Hamano
parent 23a6a12dfa
commit 238a9dfe86

View File

@ -42,10 +42,13 @@ int win32_pthread_join(pthread_t *thread, void **value_ptr)
case WAIT_OBJECT_0: case WAIT_OBJECT_0:
if (value_ptr) if (value_ptr)
*value_ptr = thread->arg; *value_ptr = thread->arg;
CloseHandle(thread->handle);
return 0; return 0;
case WAIT_ABANDONED: case WAIT_ABANDONED:
CloseHandle(thread->handle);
return EINVAL; return EINVAL;
default: default:
/* the wait failed, so do not detach */
return err_win_to_posix(GetLastError()); return err_win_to_posix(GetLastError());
} }
} }