From febc4b9923c6a20539e615b99eb59be7e2c43189 Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 18 Aug 2008 15:35:21 +0000 Subject: [PATCH] * io.c (rb_io_check_readable): side effect for STDIN removed. (rb_io_external_encoding): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ io.c | 6 ------ test/ruby/test_io_m17n.rb | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9585754ae8..5f2ef59bd7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 19 00:34:24 2008 Tanaka Akira + + * 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 * io.c (io_ungetbyte): renamed from io_ungetc. diff --git a/io.c b/io.c index df1ae247dd..e4084e7104 100644 --- a/io.c +++ b/io.c @@ -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