After joining threads, the handle to the original thread should be closed as
it no longer needs to be open.
Signed-off-by: Seija Kijin doremylover123@gmail.com
Seija Kijin (2):
win32-pthread: prepare pthread.c for change by formatting
win32: close handles of threads that have been joined
compat/win32/pthread.c | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
base-commit: 7c2ef319c52c4997256f5807564523dfd4acdfc7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1406%2FAtariDreams%2Fjoin-v10
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1406/AtariDreams/join-v10
Pull-Request: https://github.com/git/git/pull/1406
Range-diff vs v9:
2: 4c82a16a995 ! 1: e0cc43efc6c prep: reformat pthread.c to fit coding guidelines
@@ Metadata
Author: Seija Kijin [off-list ref]
## Commit message ##
- prep: reformat pthread.c to fit coding guidelines
+ win32-pthread: prepare pthread.c for change by formatting
- The motivation for this change is that
- the post-image better fits the coding
- guidelines, especially since this file
- was changed.
+ File has been formatted to meet coding guidelines
Signed-off-by: Seija Kijin [off-list ref]
@@ compat/win32/pthread.c: int pthread_create(pthread_t *thread, const void *unused
- case WAIT_OBJECT_0:
- if (value_ptr)
- *value_ptr = thread->arg;
-- CloseHandle(thread->handle);
- return 0;
- case WAIT_ABANDONED:
-- CloseHandle(thread->handle);
- return EINVAL;
- default:
-- /* the wait failed, so do not detach */
- return err_win_to_posix(GetLastError());
+ switch (WaitForSingleObject(thread->handle, INFINITE)) {
+ case WAIT_OBJECT_0:
+ if (value_ptr)
+ *value_ptr = thread->arg;
-+ CloseHandle(thread->handle);
+ return 0;
+ case WAIT_ABANDONED:
-+ CloseHandle(thread->handle);
+ return EINVAL;
+ default:
-+ /* the wait failed, so do not detach */
+ return err_win_to_posix(GetLastError());
}
}
1: d9b1df22e03 ! 2: d05d4c2e4b2 win32: close handles of threads that have been joined
@@ Commit message
## compat/win32/pthread.c ##
@@ compat/win32/pthread.c: int win32_pthread_join(pthread_t *thread, void **value_ptr)
- case WAIT_OBJECT_0:
- if (value_ptr)
- *value_ptr = thread->arg;
-+ CloseHandle(thread->handle);
- return 0;
- case WAIT_ABANDONED:
-+ CloseHandle(thread->handle);
- return EINVAL;
- default:
-+ /* the wait failed, so do not detach */
- return err_win_to_posix(GetLastError());
+ case WAIT_OBJECT_0:
+ if (value_ptr)
+ *value_ptr = thread->arg;
++ CloseHandle(thread->handle);
+ return 0;
+ case WAIT_ABANDONED:
++ CloseHandle(thread->handle);
+ return EINVAL;
+ default:
++ /* the wait failed, so do not detach */
+ return err_win_to_posix(GetLastError());
}
}
--
gitgitgadget