w32: Use cast by uintptr_T for thread ID
Signed-off-by: EulerOSWander <314264452@qq.com>
This commit is contained in:
parent
3010e82ede
commit
d4b09cff88
73
backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch
Executable file
73
backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch
Executable file
@ -0,0 +1,73 @@
|
||||
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
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: npth
|
||||
Version: 1.6
|
||||
Release: 1
|
||||
Release: 2
|
||||
Summary: The New GNU Portable Threads library
|
||||
License: LGPLv2+
|
||||
URL: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git
|
||||
@ -19,6 +19,8 @@ stack, signal mask and errno variable.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Patch6000: backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch
|
||||
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
@ -55,7 +57,11 @@ make check
|
||||
%{_datadir}/aclocal/%{name}.m4
|
||||
|
||||
%changelog
|
||||
* Mon Sep 28 2020 EulerOSWander <314264452@qq.com> - 1.6-2
|
||||
- Use cast by uintptr_t for thread ID.
|
||||
|
||||
* Thu Jul 23 2020 jinzhimin <jinzhimin2@huawei.com> - 1.6-1
|
||||
- Package update
|
||||
|
||||
* Tue Aug 13 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.5-7
|
||||
- Package init
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user