about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2019-08-07 02:57:53 -0400
committerRich Felker <dalias@aerifal.cx>2019-08-07 02:57:53 -0400
commitd0b547dfb5f7678cab6bc39dd736ed6454357ca4 (patch)
treee99011708d88b2d4c8c7d106865cb25793f3c5ae /src
parente408deefeb1a60b6e9e1bb63393590926f96ee64 (diff)
downloadmusl-d0b547dfb5f7678cab6bc39dd736ed6454357ca4.tar.gz
musl-d0b547dfb5f7678cab6bc39dd736ed6454357ca4.tar.xz
musl-d0b547dfb5f7678cab6bc39dd736ed6454357ca4.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/select/select.c3
1 files changed, 2 insertions, 1 deletions
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 }));