diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-05-21 05:39:19 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-05-21 05:39:19 +0000 |
commit | edbe98d848e4872654bb5273a6a8250492026c18 (patch) | |
tree | 9d9e68c491b333a85b01f36f74935e98f873b043 /eval.c | |
parent | 9402cbeec54f5a4de56588a1b980f53e5d50c04e (diff) |
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@2482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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; |