From 938fcd6b701e0ac1bf985da4a9d6314d6a0f9f08 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 21 Jan 2009 12:42:39 +0000 Subject: [PATCH] * io.c (rb_io_ungetbyte, rb_io_ungetc): allows nil to reset EOF flag with ungetting nothing. * ruby.c (load_file_internal): rests EOF flag to make possible to load from stdin after reading data. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21718 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ io.c | 4 ++-- ruby.c | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dd387da937..421ad444b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Jan 21 21:43:50 2009 Nobuyoshi Nakada + + * io.c (rb_io_ungetbyte, rb_io_ungetc): allows nil to reset EOF + flag with ungetting nothing. + + * ruby.c (load_file_internal): rests EOF flag to make possible to + load from stdin after reading data. + Wed Jan 21 15:32:15 2009 Nobuyoshi Nakada * io.c (rb_io_ungetbyte, rb_io_ungetc): clears EOF flag. diff --git a/io.c b/io.c index ee8bf7cb93..5555de7c26 100644 --- a/io.c +++ b/io.c @@ -2860,6 +2860,7 @@ rb_io_ungetbyte(VALUE io, VALUE b) GetOpenFile(io, fptr); rb_io_check_readable(fptr); + io_unset_eof(fptr); if (NIL_P(b)) return Qnil; if (FIXNUM_P(b)) { char cc = FIX2INT(b); @@ -2869,7 +2870,6 @@ rb_io_ungetbyte(VALUE io, VALUE b) SafeStringValue(b); } io_ungetbyte(b, fptr); - io_unset_eof(fptr); return Qnil; } @@ -2897,6 +2897,7 @@ rb_io_ungetc(VALUE io, VALUE c) GetOpenFile(io, fptr); rb_io_check_readable(fptr); + io_unset_eof(fptr); if (NIL_P(c)) return Qnil; if (FIXNUM_P(c)) { int cc = FIX2INT(c); @@ -2926,7 +2927,6 @@ rb_io_ungetc(VALUE io, VALUE c) else { io_ungetbyte(c, fptr); } - io_unset_eof(fptr); return Qnil; } diff --git a/ruby.c b/ruby.c index 9bf79bdfb4..e43fc2c9e5 100644 --- a/ruby.c +++ b/ruby.c @@ -1581,6 +1581,7 @@ load_file_internal(VALUE arg) rb_io_ungetbyte(f, c); } require_libraries(opt); /* Why here? unnatural */ + rb_io_ungetbyte(f, Qnil); } if (opt->src.enc.index >= 0) { enc = rb_enc_from_index(opt->src.enc.index);