summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-24 10:39:20 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-24 10:39:20 +0000
commitb4f1675c777e497f2a5fb2c922c4710f58f84676 (patch)
tree64b74bc429a9f17d265c6800017a5cd41b998624
parentf06d71b5b8e3d699c1f4db5fac7e157067b01057 (diff)
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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--re.c3
-rw-r--r--test/ruby/test_regexp.rb4
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 5a3f347944..14b7117b9e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jul 22 16:27:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * 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@segment7.net>
* README.EXT: fix signature of rb_ensure and rb_rescue to match
diff --git a/re.c b/re.c
index db440d156a..f0213235c9 100644
--- a/re.c
+++ b/re.c
@@ -373,7 +373,8 @@ rb_reg_expr_str(VALUE str, const char *s, long len,
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);
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index 9e850b902e..35162310db 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -155,8 +155,8 @@ class TestRegexp < Test::Unit::TestCase
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