From d0b547dfb5f7678cab6bc39dd736ed6454357ca4 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 7 Aug 2019 02:57:53 -0400 Subject: fix regression in select with no timeout commit 722a1ae3351a03ab25010dbebd492eced664853b inadvertently passed a copy of {s,us} to the syscall even if the timeout argument tv was null, thereby causing immediate timeout (polling) in place of unlimited timeout. only archs using SYS_select were affected. --- src/select/select.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/select/select.c b/src/select/select.c index e84c887f..8a786884 100644 --- a/src/select/select.c +++ b/src/select/select.c @@ -35,7 +35,8 @@ int select(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict return __syscall_ret(r); #endif #ifdef SYS_select - return syscall_cp(SYS_select, n, rfds, wfds, efds, ((long[]){s, us})); + return syscall_cp(SYS_select, n, rfds, wfds, efds, + tv ? ((long[]){s, us}) : 0); #else return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, tv ? ((long[]){s, ns}) : 0, ((syscall_arg_t[]){ 0, _NSIG/8 })); -- cgit v1.2.1