summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-08 13:10:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-08 13:10:04 +0000
commit31b7ae00c05aef76416c767df92be45d62e9d06a (patch)
tree87743fd1893484f1af704d20e3695810ea21a893 /thread.c
parent034414741e4616f7a305f12fe36e1f9a6b0ff074 (diff)
* include/ruby/st.h (st_hash_func): use st_index_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/thread.c b/thread.c
index 05d129de2a..c7a334ff0f 100644
--- a/thread.c
+++ b/thread.c
@@ -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;