diff options
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -2356,6 +2356,11 @@ do_select(int n, fd_set *read, fd_set *write, fd_set *except, { int result, lerrno; fd_set orig_read, orig_write, orig_except; +#if defined __GNUC__ && defined __x86_64__ +#define FAKE_FD_ZERO(f) (*(int *)&(f)=0) /* suppress lots of warnings */ +#else +#define FAKE_FD_ZERO(f) ((void)0) +#endif #ifndef linux double limit = 0; @@ -2377,9 +2382,11 @@ do_select(int n, fd_set *read, fd_set *write, fd_set *except, } #endif - if (read) orig_read = *read; - if (write) orig_write = *write; - if (except) orig_except = *except; + if (read) orig_read = *read; else FAKE_FD_ZERO(orig_read); + if (write) orig_write = *write; else FAKE_FD_ZERO(orig_write); + if (except) orig_except = *except; else FAKE_FD_ZERO(orig_except); + +#undef FAKE_FD_ZERO retry: lerrno = 0; |