* io.c (select_internal): fix SEGV by `select [STDIN],nil,[STDIN]'.

fixed by Petr Chromec.
  http://rubyforge.org/tracker/index.php?func=detail&aid=17275&group_id=426&atid=1698


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2008-01-30 15:21:40 +00:00
Родитель 8429f2be9f
Коммит dc36ca0ba5
2 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Thu Jan 31 00:01:51 2008 Tanaka Akira <akr@fsij.org>
* io.c (select_internal): fix SEGV by `select [STDIN],nil,[STDIN]'.
fixed by Petr Chromec.
http://rubyforge.org/tracker/index.php?func=detail&aid=17275&group_id=426&atid=1698
Wed Jan 30 17:32:49 2008 NARUSE, Yui <naruse@ruby-lang.org> Wed Jan 30 17:32:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
* enc/*.c: add GB12345, UCS-{2,4}{BE,LE}. * enc/*.c: add GB12345, UCS-{2,4}{BE,LE}.

2
io.c
Просмотреть файл

@ -5316,7 +5316,7 @@ select_internal(VALUE read, VALUE write, VALUE except, struct timeval *tp, rb_fd
if (ep) { if (ep) {
list = RARRAY_PTR(res)[2]; list = RARRAY_PTR(res)[2];
for (i=0; i< RARRAY_LEN(except); i++) { for (i=0; i< RARRAY_LEN(except); i++) {
VALUE obj = rb_ary_entry(write, i); VALUE obj = rb_ary_entry(except, i);
VALUE io = rb_io_get_io(obj); VALUE io = rb_io_get_io(obj);
VALUE write_io = GetWriteIO(io); VALUE write_io = GetWriteIO(io);
GetOpenFile(io, fptr); GetOpenFile(io, fptr);