瀏覽代碼

* fixed ppoll for infinite timeouts (patch by Edmund Grimley Evans)

git-svn-id: trunk@31042 -
Jonas Maebe 10 年之前
父節點
當前提交
e54d0a41af
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      rtl/linux/bunxsysc.inc

+ 9 - 4
rtl/linux/bunxsysc.inc

@@ -492,10 +492,15 @@ function fpPoll(fds: ppollfd; nfds: cuint; timeout: clong): cint;
 {$if defined(generic_linux_syscalls)}
 {$if defined(generic_linux_syscalls)}
 var ts : timespec;
 var ts : timespec;
 begin
 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;
 end;
 {$else}
 {$else}
 begin
 begin