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