From 700e06bb97cc0e17ca899f9bac9d46d201ed81d3 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sun, 7 Sep 2014 15:58:51 +0200 Subject: [PATCH] fix thread and shm cleanup in the cancellation point test --- src/functional/pthread_cancel-points.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/functional/pthread_cancel-points.c b/src/functional/pthread_cancel-points.c index 2c12ed6..4cb50d2 100644 --- a/src/functional/pthread_cancel-points.c +++ b/src/functional/pthread_cancel-points.c @@ -25,7 +25,6 @@ static void prepare_sem(void *arg) static void cleanup_sem(void *arg) { - TESTR(sem_post(&sem_test), "posting semaphore"); TESTR(sem_destroy(&sem_test), "destroying semaphore"); } @@ -59,11 +58,12 @@ static void prepare_thread(void *arg) static void cleanup_thread(void *arg) { void *res; + if (td_test) { + TESTR(sem_post(&sem_test), "posting semaphore"); + TESTR(pthread_join(td_test, &res), "joining auxiliary thread"); + TESTC(res == 0, "auxiliary thread exit status"); + } cleanup_sem(arg); - if (!td_test) - return; - TESTR(pthread_join(td_test, &res), "joining auxiliary thread"); - TESTC(res == 0, "auxiliary thread exit status"); } static void execute_thread_join(void *arg) @@ -85,7 +85,8 @@ static void execute_shm_open(void *arg) static void cleanup_shm(void *arg) { int *fd = arg; - TESTE(close(*fd), "shm fd"); + if (*fd != -1) + TESTE(close(*fd), "shm fd"); TESTE(shm_unlink("/testshm"), ""); } -- 2.20.1