diff --git a/rtl/linux/bunxsysc.inc b/rtl/linux/bunxsysc.inc index 270d4f1f3d..c8d7849672 100644 --- a/rtl/linux/bunxsysc.inc +++ b/rtl/linux/bunxsysc.inc @@ -492,10 +492,15 @@ function fpPoll(fds: ppollfd; nfds: cuint; timeout: clong): cint; {$if defined(generic_linux_syscalls)} var ts : timespec; begin - ts.tv_sec := timeout div 1000; - ts.tv_nsec := (timeout mod 1000) * 1000000; - fpPoll:=do_syscall(syscall_nr_ppoll,tsysparam(fds),tsysparam(nfds), - tsysparam(@ts),0); + if timeout<0 then + fpPoll:=do_syscall(syscall_nr_ppoll,tsysparam(fds),tsysparam(nfds),0,0) + else + begin + ts.tv_sec := timeout div 1000; + ts.tv_nsec := (timeout mod 1000) * 1000000; + fpPoll:=do_syscall(syscall_nr_ppoll,tsysparam(fds),tsysparam(nfds), + tsysparam(@ts),0); + end end; {$else} begin