ruby-changes:10942
From: yugui <ko1@a...>
Date: Sun, 22 Feb 2009 18:48:32 +0900 (JST)
Subject: [ruby-changes:10942] Ruby:r22518 (ruby_1_9_1): merges r22099 from trunk into ruby_1_9_1.
yugui 2009-02-22 18:48:19 +0900 (Sun, 22 Feb 2009) New Revision: 22518 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22518 Log: merges r22099 from trunk into ruby_1_9_1. * io.c (io_fread): use rb_io_wait_readable for retry avoid Errno::EINTR on ruby -e 'trap(:CHLD) {}; spawn("sleep 1"); STDIN.read' Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/io.c Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 22517) +++ ruby_1_9_1/ChangeLog (revision 22518) @@ -1,3 +1,8 @@ +Fri Feb 6 23:28:33 2009 Tanaka Akira <akr@f...> + + * io.c (io_fread): use rb_io_wait_readable for retry + avoid Errno::EINTR on ruby -e 'trap(:CHLD) {}; spawn("sleep 1"); STDIN.read' + Fri Feb 6 20:37:42 2009 Tanaka Akira <akr@f...> * signal.c (register_sigaltstack): ignore sigaltstack error. Index: ruby_1_9_1/io.c =================================================================== --- ruby_1_9_1/io.c (revision 22517) +++ ruby_1_9_1/io.c (revision 22518) @@ -1428,12 +1428,15 @@ if (READ_DATA_PENDING(fptr) == 0) { while (n > 0) { + again: c = rb_read_internal(fptr->fd, RSTRING_PTR(str)+offset, n); if (c == 0) { io_set_eof(fptr); break; } if (c < 0) { + if (rb_io_wait_readable(fptr->fd)) + goto again; rb_sys_fail_path(fptr->pathv); } offset += c; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/