summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-21 05:39:19 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-21 05:39:19 +0000
commitf09bd390321cbfecb65b2e9f8dace0a7cb4d3788 (patch)
tree9d9e68c491b333a85b01f36f74935e98f873b043 /eval.c
parente2dade5924760387b40e9ed6f9ba0d6626a72296 (diff)
downloadruby-f09bd390321cbfecb65b2e9f8dace0a7cb4d3788.tar.gz
ruby-f09bd390321cbfecb65b2e9f8dace0a7cb4d3788.tar.xz
ruby-f09bd390321cbfecb65b2e9f8dace0a7cb4d3788.zip
* object.c (Init_Object): should do exact match for Module#==.
* compar.c (cmp_eq): returns 'false' if <=> returns 'nil'. * compar.c (cmp_gt,cmp_ge,cmp_lt,cmp_le,cmp_between): ditto. * pack.c (pack_pack): should propagate taintedness. * pack.c (pack_unpack): ditto. * eval.c (rb_thread_schedule): need to preserve errno before calling rb_trap_exec(). * regex.c (calculate_must_string): a bug in charset/charset_not parsing. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 9e666d7e4..02cfa3fac 100644
--- a/eval.c
+++ b/eval.c
@@ -7813,8 +7813,13 @@ rb_thread_schedule()
n = select(max+1, &readfds, &writefds, &exceptfds, delay_ptr);
if (n < 0) {
+ int e = errno;
+
if (rb_trap_pending) rb_trap_exec();
- if (errno == EINTR) goto again;
+ if (e == EINTR) goto again;
+#ifdef ERESTART
+ if (e == ERESTART) goto again;
+#endif
FOREACH_THREAD_FROM(curr, th) {
if (th->wait_for & WAIT_SELECT) {
int v = 0;