From: Dmitry V. Levin Date: Wed, 20 Apr 2016 04:32:04 +0000 (+0000) Subject: tests/rt_sigpending.c: fix for systems where _NSIG > 16 * sizeof(long) X-Git-Tag: v4.12~381 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c8cc0f2a87b5f7a33bf7dee39ba4ba2dc5cb4cb4;p=strace 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. --- 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; } }