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

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/

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