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

ruby-changes:29208

From: nagachika <ko1@a...>
Date: Wed, 12 Jun 2013 23:23:53 +0900 (JST)
Subject: [ruby-changes:29208] nagachika:r41260 (ruby_2_0_0): merge revision(s) 41250: [Backport #8516]

nagachika	2013-06-12 23:23:39 +0900 (Wed, 12 Jun 2013)

  New Revision: 41260

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41260

  Log:
    merge revision(s) 41250: [Backport #8516]
    
    * io.c (io_getc): fix 7bit coderange condition, check if ascii read
      data instead of read length. [ruby-core:55444] [Bug #8516]

  Modified directories:
    branches/ruby_2_0_0/
  Modified files:
    branches/ruby_2_0_0/ChangeLog
    branches/ruby_2_0_0/io.c
    branches/ruby_2_0_0/test/ruby/test_io_m17n.rb
    branches/ruby_2_0_0/version.h

Index: ruby_2_0_0/ChangeLog
===================================================================
--- ruby_2_0_0/ChangeLog	(revision 41259)
+++ ruby_2_0_0/ChangeLog	(revision 41260)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/ChangeLog#L1
+Wed Jun 12 23:05:41 2013  Nobuyoshi Nakada  <nobu@r...>
+
+	* io.c (io_getc): fix 7bit coderange condition, check if ascii read
+	  data instead of read length. [ruby-core:55444] [Bug #8516]
+
 Sun Jun  9 02:27:07 2013  Nobuyoshi Nakada  <nobu@r...>
 
 	* lib/mkmf.rb (install_dirs, with_destdir): prefix with DESTDIR
Index: ruby_2_0_0/io.c
===================================================================
--- ruby_2_0_0/io.c	(revision 41259)
+++ ruby_2_0_0/io.c	(revision 41260)
@@ -3385,7 +3385,11 @@ io_getc(rb_io_t *fptr, rb_encoding *enc) https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/io.c#L3385
 	}
 	else {
 	    io_shift_cbuf(fptr, MBCLEN_CHARFOUND_LEN(r), &str);
-	    cr = ISASCII(r) ? ENC_CODERANGE_7BIT : ENC_CODERANGE_VALID;
+	    cr = ENC_CODERANGE_VALID;
+	    if (MBCLEN_CHARFOUND_LEN(r) == 1 && rb_enc_asciicompat(read_enc) &&
+		ISASCII(RSTRING_PTR(str)[0])) {
+		cr = ENC_CODERANGE_7BIT;
+	    }
 	}
 	str = io_enc_str(str, fptr);
 	ENC_CODERANGE_SET(str, cr);
Index: ruby_2_0_0/version.h
===================================================================
--- ruby_2_0_0/version.h	(revision 41259)
+++ ruby_2_0_0/version.h	(revision 41260)
@@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/version.h#L1
 #define RUBY_VERSION "2.0.0"
-#define RUBY_RELEASE_DATE "2013-06-09"
-#define RUBY_PATCHLEVEL 214
+#define RUBY_RELEASE_DATE "2013-06-12"
+#define RUBY_PATCHLEVEL 215
 
 #define RUBY_RELEASE_YEAR 2013
 #define RUBY_RELEASE_MONTH 6
-#define RUBY_RELEASE_DAY 9
+#define RUBY_RELEASE_DAY 12
 
 #include "ruby/version.h"
 
Index: ruby_2_0_0/test/ruby/test_io_m17n.rb
===================================================================
--- ruby_2_0_0/test/ruby/test_io_m17n.rb	(revision 41259)
+++ ruby_2_0_0/test/ruby/test_io_m17n.rb	(revision 41260)
@@ -2159,7 +2159,17 @@ EOT https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/test/ruby/test_io_m17n.rb#L2159
       open("a", "wb") {|f| f.puts "a"}
       open("a", "rt") {|f| f.getc}
     }
-    assert(c.ascii_only?, "should be ascii_only #{bug4557}")
+    assert_predicate(c, :ascii_only?, bug4557)
+  end
+
+  def test_getc_conversion
+    bug8516 = '[ruby-core:55444] [Bug #8516]'
+    c = with_tmpdir {
+      open("a", "wb") {|f| f.putc "\xe1"}
+      open("a", "r:iso-8859-1:utf-8") {|f| f.getc}
+    }
+    assert_not_predicate(c, :ascii_only?, bug8516)
+    assert_equal(1, c.size, bug8516)
   end
 
   def test_default_mode_on_dosish

Property changes on: ruby_2_0_0
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r41250


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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