ruby-changes:7177
From: akr <ko1@a...>
Date: Tue, 19 Aug 2008 00:35:40 +0900 (JST)
Subject: [ruby-changes:7177] Ruby:r18695 (trunk): * io.c (rb_io_check_readable): side effect for STDIN removed.
akr 2008-08-19 00:35:21 +0900 (Tue, 19 Aug 2008) New Revision: 18695 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18695 Log: * io.c (rb_io_check_readable): side effect for STDIN removed. (rb_io_external_encoding): ditto. Modified files: trunk/ChangeLog trunk/io.c trunk/test/ruby/test_io_m17n.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 18694) +++ ChangeLog (revision 18695) @@ -1,3 +1,8 @@ +Tue Aug 19 00:34:24 2008 Tanaka Akira <akr@f...> + + * 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@f...> * io.c (io_ungetbyte): renamed from io_ungetc. Index: io.c =================================================================== --- io.c (revision 18694) +++ io.c (revision 18695) @@ -388,9 +388,6 @@ 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 @@ 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); Index: test/ruby/test_io_m17n.rb =================================================================== --- test/ruby/test_io_m17n.rb (revision 18694) +++ test/ruby/test_io_m17n.rb (revision 18695) @@ -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 @@ } 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/