From c8cc0f2a87b5f7a33bf7dee39ba4ba2dc5cb4cb4 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 20 Apr 2016 04:32:04 +0000 Subject: [PATCH] tests/rt_sigpending.c: fix for systems where _NSIG > 16 * sizeof(long) * tests/rt_sigsuspend.c (iterate): Do not assume that size will be less than sizeof(long) on the second iteration. --- tests/rt_sigsuspend.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/rt_sigsuspend.c b/tests/rt_sigsuspend.c index 07a50e08..b96a8c9b 100644 --- a/tests/rt_sigsuspend.c +++ b/tests/rt_sigsuspend.c @@ -48,11 +48,13 @@ k_sigsuspend(const sigset_t *const set, const unsigned long size) static void iterate(const char *const text, const int sig, - const void *set, unsigned int size) + const void *const set, unsigned int size) { - for (;;) { + const void *mask; + + for (mask = set;; size >>= 1, mask += size) { raise(sig); - assert(k_sigsuspend(set, size) == -1); + assert(k_sigsuspend(mask, size) == -1); if (EINTR == errno) { tprintf("rt_sigsuspend(%s, %u) = ? ERESTARTNOHAND" " (To be restarted if no handler)\n", @@ -61,16 +63,14 @@ iterate(const char *const text, const int sig, if (size < sizeof(long)) tprintf("rt_sigsuspend(%p, %u)" " = -1 EINVAL (%m)\n", - set, size); + mask, size); else tprintf("rt_sigsuspend(%s, %u)" " = -1 EINVAL (%m)\n", - text, size); + set == mask ? text : "~[]", size); } if (!size) break; - size >>= 1; - set += size; } } -- 2.40.0