diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | io.c | 6 | ||||
-rw-r--r-- | test/ruby/test_io_m17n.rb | 19 |
3 files changed, 24 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Tue Aug 19 00:34:24 2008 Tanaka Akira <akr@fsij.org> + + * io.c (rb_io_check_readable): side effect for STDIN removed. + (rb_io_external_encoding): ditto. + Mon Aug 18 23:27:07 2008 Tanaka Akira <akr@fsij.org> * io.c (io_ungetbyte): renamed from io_ungetc. @@ -388,9 +388,6 @@ rb_io_check_readable(rb_io_t *fptr) GetOpenFile(fptr->tied_io_for_writing, wfptr); io_fflush(wfptr); } - if (!fptr->enc && fptr->fd == 0) { - fptr->enc = rb_default_external_encoding(); - } } static rb_encoding* @@ -7359,9 +7356,6 @@ rb_io_external_encoding(VALUE io) if (fptr->enc2) { return rb_enc_from_encoding(fptr->enc2); } - if (!fptr->enc && fptr->fd == 0) { - fptr->enc = rb_default_external_encoding(); - } if (fptr->mode & FMODE_WRITABLE) { if (fptr->enc) return rb_enc_from_encoding(fptr->enc); diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index b059f70ff3..fbf386548a 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -1,6 +1,7 @@ require 'test/unit' require 'tmpdir' require 'timeout' +require_relative 'envutil' class TestIO_M17N < Test::Unit::TestCase ENCS = [ @@ -662,5 +663,23 @@ EOT } end + def test_stdin_external_encoding_with_reopen + with_tmpdir { + open("tst", "w+") {|f| + pid = spawn(EnvUtil.rubybin, '-e', <<-'End', 10=>f) + io = IO.new(10, "r+") + STDIN.reopen(io) + STDIN.external_encoding + STDIN.write "\u3042" + STDIN.flush + End + Process.wait pid + f.rewind + result = f.read.force_encoding("ascii-8bit") + assert_equal("\u3042".force_encoding("ascii-8bit"), result) + } + } + end + end |