From c1d630d5fd3c0b3307811d51f9840652e066a0f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 2 Feb 2015 14:51:31 -0500 Subject: [PATCH] shared/async: simplify asynchronous_job a bit --- src/shared/async.c | 12 +++--------- src/test/test-async.c | 2 ++ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/shared/async.c b/src/shared/async.c index 115901e63..7725e6d7d 100644 --- a/src/shared/async.c +++ b/src/shared/async.c @@ -41,24 +41,18 @@ int asynchronous_job(void* (*func)(void *p), void *arg) { * only in long running processes. */ r = pthread_attr_init(&a); - if (r != 0) + if (r > 0) return -r; r = pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED); - if (r != 0) { - r = -r; + if (r > 0) goto finish; - } r = pthread_create(&t, &a, func, arg); - if (r != 0) { - r = -r; - goto finish; - } finish: pthread_attr_destroy(&a); - return r; + return -r; } static void *sync_thread(void *p) { diff --git a/src/test/test-async.c b/src/test/test-async.c index 401e68551..abd36d693 100644 --- a/src/test/test-async.c +++ b/src/test/test-async.c @@ -38,7 +38,9 @@ int main(int argc, char *argv[]) { fd = mkostemp_safe(name, O_RDWR|O_CLOEXEC); assert_se(fd >= 0); asynchronous_close(fd); + assert_se(asynchronous_job(async_func, NULL) >= 0); + assert_se(asynchronous_sync() >= 0); sleep(1); -- 2.30.2