Projects
openEuler:Mainline
npth
_service:tar_scm:backport-0001-w32-Use-cast-by-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch of Package npth
From 377c1b91e67af25613ccb72ee26449661cea8d8e Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka <gniibe@fsij.org> Date: Thu, 8 Nov 2018 13:26:41 +0900 Subject: [PATCH 12/18] w32: Use cast by uintptr_t for thread ID. * w32/npth.c (npth_init): Cast with uintptr_t. (npth_setname_np, npth_create, npth_self): Likewise. -- In w32/npth.h, npth_t is unsigned long int type, which is 32-bit for both of 32-bit machine and 64-bit machine. We use TlsSetValue, TlsGetValue and CreateThread API to handle thread ID, which uses void * type, which is 64-bit on 64-bit machine. Because the size is different on 64-bit machine, here, we use explicit cast to integer type which has enough size to have pointer. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> --- w32/npth.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/w32/npth.c b/w32/npth.c index 6ea6d19..41213c0 100644 --- a/w32/npth.c +++ b/w32/npth.c @@ -351,7 +351,7 @@ npth_init (void) thread = thread_table[thread_id]; thread->handle = handle; - if (! TlsSetValue(tls_index, (LPVOID) thread_id)) + if (! TlsSetValue(tls_index, (LPVOID)(uintptr_t) thread_id)) return map_error (GetLastError()); LEAVE(); @@ -449,11 +449,11 @@ npth_setname_np (npth_t target_thread, const char *name) static DWORD thread_start (void *arg) { - npth_t thread_id = (npth_t) arg; + npth_t thread_id = (npth_t)(uintptr_t) arg; npth_impl_t thread; void *result; - if (! TlsSetValue(tls_index, (LPVOID) thread_id)) + if (! TlsSetValue(tls_index, (LPVOID)(uintptr_t) thread_id)) /* FIXME: There is not much we can do here. */ ; @@ -519,7 +519,7 @@ npth_create (npth_t *newthread, const npth_attr_t *user_attr, handle = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)thread_start, - (void *) thread_id, CREATE_SUSPENDED, + (void *)(uintptr_t) thread_id, CREATE_SUSPENDED, NULL); if (handle == NULL) { @@ -556,7 +556,7 @@ npth_self (void) if (thread_id == 0 && GetLastError() != ERROR_SUCCESS) /* FIXME: Log the error. */ ; - return (npth_t) thread_id; + return (npth_t)(uintptr_t) thread_id; } -- 1.8.3.1
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2