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/