diff --git a/ChangeLog b/ChangeLog index 122f3758b8..a527e7bf2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jun 16 07:14:48 2008 Nobuyoshi Nakada + + * ext/stringio/stringio.c (strio_readline, strio_each) + (strio_readlines): set lastline. [ruby-core:17257] + Mon Jun 16 01:49:39 2008 Koichi Sasada * eval.c (rb_f_block_given_p): fix to skip class frame. diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 8b5abb3f62..d140ced7e7 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -928,7 +928,7 @@ strio_gets(int argc, VALUE *argv, VALUE self) static VALUE strio_readline(int argc, VALUE *argv, VALUE self) { - VALUE line = strio_getline(argc, argv, readable(StringIO(self))); + VALUE line = strio_gets(argc, argv, self); if (NIL_P(line)) rb_eof_error(); return line; } @@ -953,6 +953,7 @@ strio_each(int argc, VALUE *argv, VALUE self) RETURN_ENUMERATOR(self, argc, argv); while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) { + rb_lastline_set(line); rb_yield(line); } return self; @@ -974,6 +975,7 @@ strio_readlines(int argc, VALUE *argv, VALUE self) while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) { rb_ary_push(ary, line); } + rb_lastline_set(Qnil); return ary; }