From 0e4b529df5c65d51d81f998055c6aac52f55437f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 24 Apr 2019 19:55:05 +0200 Subject: [PATCH] pthread: pthread_getattr_np must call pthread_attr_init(). Fix #15025 Change-Id: Ie0b91714d375d75170b54e81cb31cf18b106ecc1 Reviewed-on: https://review.haiku-os.org/c/1413 Reviewed-by: Adrien Destugues --- src/system/libroot/posix/pthread/pthread_attr.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/system/libroot/posix/pthread/pthread_attr.c b/src/system/libroot/posix/pthread/pthread_attr.c index ac6894508b..fe83a298d6 100644 --- a/src/system/libroot/posix/pthread/pthread_attr.c +++ b/src/system/libroot/posix/pthread/pthread_attr.c @@ -18,6 +18,7 @@ #include +int __pthread_attr_get_np(pthread_t thread, pthread_attr_t *_attr); int __pthread_getattr_np(pthread_t thread, pthread_attr_t *_attr); @@ -241,7 +242,7 @@ pthread_attr_setstack(pthread_attr_t *_attr, void *stackaddr, int -__pthread_getattr_np(pthread_t thread, pthread_attr_t *_attr) +__pthread_attr_get_np(pthread_t thread, pthread_attr_t *_attr) { pthread_attr *attr; status_t status; @@ -268,6 +269,16 @@ __pthread_getattr_np(pthread_t thread, pthread_attr_t *_attr) } -B_DEFINE_WEAK_ALIAS(__pthread_getattr_np, pthread_getattr_np); -B_DEFINE_WEAK_ALIAS(__pthread_getattr_np, pthread_attr_get_np); +int +__pthread_getattr_np(pthread_t thread, pthread_attr_t *_attr) +{ + int err = pthread_attr_init(_attr); + if (err == 0) + err = __pthread_attr_get_np(thread, _attr); + return err; +} + + +B_DEFINE_WEAK_ALIAS(__pthread_getattr_np, pthread_getattr_np); +B_DEFINE_WEAK_ALIAS(__pthread_attr_get_np, pthread_attr_get_np);