|
From: Khem R. <raj...@gm...> - 2020-01-28 01:23:29
|
pthread_t is opaque type therefore we can not apply simple arithmetic to variables of pthread_t type this test needs to pass a invalid pthread_t handle, typcasting (long)thread works too and is portable across glibc and musl Fixes | pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread' | 24 | pthread_detach(thread + 8); | | ^ Signed-off-by: Khem Raj <raj...@gm...> --- drd/tests/pth_detached3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c index c02eef11a..341193ba1 100644 --- a/drd/tests/pth_detached3.c +++ b/drd/tests/pth_detached3.c @@ -21,7 +21,7 @@ int main(int argc, char** argv) pthread_detach(thread); /* Invoke pthread_detach() with an invalid thread ID. */ - pthread_detach(thread + 8); + pthread_detach((pthread_t)((long)thread + 8)); fprintf(stderr, "Finished.\n"); -- 2.25.0 |
|
From: Bart V. A. <bva...@ac...> - 2020-01-28 03:16:16
|
On 2020-01-27 17:23, Khem Raj wrote: > pthread_t is opaque type therefore we can not apply simple arithmetic to variables of pthread_t type > this test needs to pass a invalid pthread_t handle, typcasting (long)thread works too and is portable > across glibc and musl > > Fixes > | pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread' > | 24 | pthread_detach(thread + 8); > | | ^ > > Signed-off-by: Khem Raj <raj...@gm...> > --- > drd/tests/pth_detached3.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c > index c02eef11a..341193ba1 100644 > --- a/drd/tests/pth_detached3.c > +++ b/drd/tests/pth_detached3.c > @@ -21,7 +21,7 @@ int main(int argc, char** argv) > pthread_detach(thread); > > /* Invoke pthread_detach() with an invalid thread ID. */ > - pthread_detach(thread + 8); > + pthread_detach((pthread_t)((long)thread + 8)); > > fprintf(stderr, "Finished.\n"); Is sizeof(long) always identical to sizeof(pthread_t)? How about casting to uintptr_t instead of to long? Thanks, Bart. |
|
From: Khem R. <raj...@gm...> - 2020-01-28 03:51:46
|
On Mon, Jan 27, 2020 at 7:16 PM Bart Van Assche <bva...@ac...> wrote: > > On 2020-01-27 17:23, Khem Raj wrote: > > pthread_t is opaque type therefore we can not apply simple arithmetic to variables of pthread_t type > > this test needs to pass a invalid pthread_t handle, typcasting (long)thread works too and is portable > > across glibc and musl > > > > Fixes > > | pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread' > > | 24 | pthread_detach(thread + 8); > > | | ^ > > > > Signed-off-by: Khem Raj <raj...@gm...> > > --- > > drd/tests/pth_detached3.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c > > index c02eef11a..341193ba1 100644 > > --- a/drd/tests/pth_detached3.c > > +++ b/drd/tests/pth_detached3.c > > @@ -21,7 +21,7 @@ int main(int argc, char** argv) > > pthread_detach(thread); > > > > /* Invoke pthread_detach() with an invalid thread ID. */ > > - pthread_detach(thread + 8); > > + pthread_detach((pthread_t)((long)thread + 8)); > > > > fprintf(stderr, "Finished.\n"); > > Is sizeof(long) always identical to sizeof(pthread_t)? How about casting > to uintptr_t instead of to long? Thanks for your review. I agree using uintptr_t would be better, I have sent a v2 > > Thanks, > > Bart. > |
|
From: Khem R. <raj...@gm...> - 2020-01-28 03:50:13
|
pthread_t is opaque type therefore we can not apply simple arithmetic to variables of pthread_t type
this test needs to pass a invalid pthread_t handle, typcasting to uintptr_t works too and is portable
across glibc and musl
Fixes
| pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread'
| 24 | pthread_detach(thread + 8);
| | ^
---
v2: Use uintptr_t instead of long
drd/tests/pth_detached3.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c
index c02eef11a..efeb15b72 100644
--- a/drd/tests/pth_detached3.c
+++ b/drd/tests/pth_detached3.c
@@ -4,6 +4,7 @@
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
+#include <stdint.h>
static void* thread_func(void* arg)
{
@@ -21,7 +22,7 @@ int main(int argc, char** argv)
pthread_detach(thread);
/* Invoke pthread_detach() with an invalid thread ID. */
- pthread_detach(thread + 8);
+ pthread_detach((pthread_t)((uintptr_t)thread + 8));
fprintf(stderr, "Finished.\n");
--
2.25.0
|
|
From: Bart V. A. <bva...@ac...> - 2020-01-29 05:09:05
|
On 2020-01-27 19:50, Khem Raj wrote: > pthread_t is opaque type therefore we can not apply simple arithmetic to variables of pthread_t type > this test needs to pass a invalid pthread_t handle, typcasting to uintptr_t works too and is portable > across glibc and musl > > Fixes > | pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread' > | 24 | pthread_detach(thread + 8); > | | ^ > --- > v2: Use uintptr_t instead of long This patch has been applied with some small changes. Please take a look at commit 92fcf75d6d39. Thanks, Bart. |