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

ruby-changes:18110

From: yugui <ko1@a...>
Date: Wed, 8 Dec 2010 17:27:01 +0900 (JST)
Subject: [ruby-changes:18110] Ruby:r30132 (ruby_1_9_2): merges r29676 from trunk into ruby_1_9_2.

yugui	2010-12-08 17:09:14 +0900 (Wed, 08 Dec 2010)

  New Revision: 30132

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

  Log:
    merges r29676 from trunk into ruby_1_9_2.
    --
    * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
      encoding string and invalid encoding string should result
      invalid encoding.  [ruby-core:33027]

  Modified files:
    branches/ruby_1_9_2/ChangeLog
    branches/ruby_1_9_2/string.c
    branches/ruby_1_9_2/test/ruby/test_m17n.rb
    branches/ruby_1_9_2/version.h

Index: ruby_1_9_2/ChangeLog
===================================================================
--- ruby_1_9_2/ChangeLog	(revision 30131)
+++ ruby_1_9_2/ChangeLog	(revision 30132)
@@ -1,3 +1,9 @@
+Wed Nov  3 14:13:46 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_enc_cr_str_buf_cat): concatenation of valid
+	  encoding string and invalid encoding string should result
+	  invalid encoding.  [ruby-core:33027]
+
 Wed Nov  3 07:47:25 2010  Yukihiro Matsumoto  <matz@r...>
 
 	* lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
Index: ruby_1_9_2/string.c
===================================================================
--- ruby_1_9_2/string.c	(revision 30131)
+++ ruby_1_9_2/string.c	(revision 30132)
@@ -1884,7 +1884,10 @@
     }
     else if (str_cr == ENC_CODERANGE_VALID) {
         res_encindex = str_encindex;
-        res_cr = str_cr;
+	if (ptr_cr == ENC_CODERANGE_7BIT || ptr_cr == ENC_CODERANGE_VALID)
+	    res_cr = str_cr;
+	else
+	    res_cr = ptr_cr;
     }
     else { /* str_cr == ENC_CODERANGE_BROKEN */
         res_encindex = str_encindex;
Index: ruby_1_9_2/version.h
===================================================================
--- ruby_1_9_2/version.h	(revision 30131)
+++ ruby_1_9_2/version.h	(revision 30132)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 86
+#define RUBY_PATCHLEVEL 87
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_2/test/ruby/test_m17n.rb
===================================================================
--- ruby_1_9_2/test/ruby/test_m17n.rb	(revision 30131)
+++ ruby_1_9_2/test/ruby/test_m17n.rb	(revision 30132)
@@ -1294,6 +1294,16 @@
     s = "\xa1\xa1\x8f".force_encoding("euc-jp")
     assert_equal(false, s.valid_encoding?)
     assert_equal(true, s.reverse.valid_encoding?)
+
+    bug4018 = '[ruby-core:33027]'
+    s = "\xa1\xa1".force_encoding("euc-jp")
+    assert_equal(true, s.valid_encoding?)
+    s << "\x8f".force_encoding("euc-jp")
+    assert_equal(false, s.valid_encoding?, bug4018)
+    s = "aa".force_encoding("utf-16be")
+    assert_equal(true, s.valid_encoding?)
+    s << "\xff".force_encoding("utf-16be")
+    assert_equal(false, s.valid_encoding?, bug4018)
   end
 
   def test_getbyte

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

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