ruby-changes:16751
From: yugui <ko1@a...>
Date: Sat, 24 Jul 2010 19:39:37 +0900 (JST)
Subject: [ruby-changes:16751] Ruby:r28747 (ruby_1_9_2): merges r28715 from trunk into ruby_1_9_2.
yugui 2010-07-24 19:39:20 +0900 (Sat, 24 Jul 2010) New Revision: 28747 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28747 Log: merges r28715 from trunk into ruby_1_9_2. -- * re.c (rb_reg_expr_str): fix broken Regexp#inspect when it is ASCII-8BIT and non-ASCII character. The length of character should be from original byte string. [ruby-core:31431] Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/re.c branches/ruby_1_9_2/test/ruby/test_regexp.rb Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 28746) +++ ruby_1_9_2/ChangeLog (revision 28747) @@ -1,3 +1,10 @@ +Thu Jul 22 16:27:41 2010 NARUSE, Yui <naruse@r...> + + * re.c (rb_reg_expr_str): fix broken Regexp#inspect when it + is ASCII-8BIT and non-ASCII character. + The length of character should be from original byte string. + [ruby-core:31431] + Thu Jul 22 03:02:55 2010 Eric Hodel <drbrain@s...> * README.EXT: fix signature of rb_ensure and rb_rescue to match Index: ruby_1_9_2/re.c =================================================================== --- ruby_1_9_2/re.c (revision 28746) +++ ruby_1_9_2/re.c (revision 28747) @@ -373,7 +373,8 @@ int l; if (resenc) { unsigned int c = rb_enc_mbc_to_codepoint(p, pend, enc); - l = rb_str_buf_cat_escaped_char(str, c, unicode_p); + l = rb_enc_codelen(c, enc); + rb_str_buf_cat_escaped_char(str, c, unicode_p); } else { l = mbclen(p, pend, enc); Index: ruby_1_9_2/test/ruby/test_regexp.rb =================================================================== --- ruby_1_9_2/test/ruby/test_regexp.rb (revision 28746) +++ ruby_1_9_2/test/ruby/test_regexp.rb (revision 28747) @@ -155,8 +155,8 @@ assert_equal('/\/x/i', /\/x/i.inspect) assert_equal('/\x00/i', /#{"\0"}/i.inspect) assert_equal("/\n/i", /#{"\n"}/i.inspect) - s = [0xff].pack("C") - assert_equal('/\/\xFF/i', /\/#{s}/i.inspect) + s = [0xf1, 0xf2, 0xf3].pack("C*") + assert_equal('/\/\xF1\xF2\xF3/i', /\/#{s}/i.inspect) end def test_char_to_option -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/