[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]