Message ID | e0cc43efc6c498706559ae4fc71c597a6481f64c.1671932405.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | win32: close handles of threads that have been joined | expand |
"Seija Kijin via GitGitGadget" <gitgitgadget@gmail.com> writes: > int pthread_create(pthread_t *thread, const void *unused, > - void *(*start_routine)(void*), void *arg) > + void *(*start_routine)(void *), void *arg) Good. > { > thread->arg = arg; > thread->start_routine = start_routine; > - thread->handle = (HANDLE) > - _beginthreadex(NULL, 0, win32_start_routine, thread, 0, NULL); > + thread->handle = (HANDLE)_beginthreadex(NULL, 0, win32_start_routine, > + thread, 0, NULL); I would say this is good either way---preimage may slightly be easier to read, but it is not worth a patch churn. > - DWORD result = WaitForSingleObject(thread->handle, INFINITE); > - switch (result) { > - case WAIT_OBJECT_0: > - if (value_ptr) > - *value_ptr = thread->arg; > - return 0; > - case WAIT_ABANDONED: > - return EINVAL; > - default: > - return err_win_to_posix(GetLastError()); > + switch (WaitForSingleObject(thread->handle, INFINITE)) { > + case WAIT_OBJECT_0: > + if (value_ptr) > + *value_ptr = thread->arg; > + return 0; > + case WAIT_ABANDONED: > + return EINVAL; > + default: > + return err_win_to_posix(GetLastError()); > } > } Loss of a single-use variable is, strictly speaking, a "while at it" change that has nothing to do with "reformatting", but otherwise the result of the hunk looks good. Will queue. Thanks. P.S. An address that is designed to bounce or sent to black hole appears on the CC: of the original e-mail message. Can you stop doing that (or is that what GGG does without user's control)? Rose <83477269+AtariDreams@users.noreply.github.com>
diff --git a/compat/win32/pthread.c b/compat/win32/pthread.c index 2e7eead42cb..65e15a560d5 100644 --- a/compat/win32/pthread.c +++ b/compat/win32/pthread.c @@ -22,12 +22,12 @@ static unsigned __stdcall win32_start_routine(void *arg) } int pthread_create(pthread_t *thread, const void *unused, - void *(*start_routine)(void*), void *arg) + void *(*start_routine)(void *), void *arg) { thread->arg = arg; thread->start_routine = start_routine; - thread->handle = (HANDLE) - _beginthreadex(NULL, 0, win32_start_routine, thread, 0, NULL); + thread->handle = (HANDLE)_beginthreadex(NULL, 0, win32_start_routine, + thread, 0, NULL); if (!thread->handle) return errno; @@ -37,16 +37,15 @@ int pthread_create(pthread_t *thread, const void *unused, int win32_pthread_join(pthread_t *thread, void **value_ptr) { - DWORD result = WaitForSingleObject(thread->handle, INFINITE); - switch (result) { - case WAIT_OBJECT_0: - if (value_ptr) - *value_ptr = thread->arg; - return 0; - case WAIT_ABANDONED: - return EINVAL; - default: - return err_win_to_posix(GetLastError()); + switch (WaitForSingleObject(thread->handle, INFINITE)) { + case WAIT_OBJECT_0: + if (value_ptr) + *value_ptr = thread->arg; + return 0; + case WAIT_ABANDONED: + return EINVAL; + default: + return err_win_to_posix(GetLastError()); } }