diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | re.c | 1 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 2 |
3 files changed, 7 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Mon Feb 18 00:33:03 2008 Tanaka Akira <akr@fsij.org> + + * re.c (rb_reg_regsub): don't repeat repl twice with + "X".sub!(/./, sprintf("\\%c", 255)). + Sun Feb 17 23:06:55 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> * lib/cgi.rb (CGI::escapeHTML): use gsub with Hash. [ruby-dev:33828] @@ -2985,6 +2985,7 @@ rb_reg_regsub(VALUE str, VALUE src, struct re_registers *regs, VALUE regexp) if (c == -1) { s += mbclen(s, e, str_enc); rb_enc_str_buf_cat(val, ss, s-ss, str_enc); + p = s; continue; } s += clen; diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index 813ade7149..1f96a28b43 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -407,7 +407,7 @@ class TestRegexp < Test::Unit::TestCase assert_equal("fooXXXbaz", "foobarbaz".sub!(/bar/, "XXX")) s = [0xff].pack("C") assert_equal(s, "X".sub!(/./, s)) - assert_equal('\\' + s + '\\' + s, "X".sub!(/./, '\\' + s)) # ??? + assert_equal('\\' + s, "X".sub!(/./, '\\' + s)) assert_equal('\k', "foo".sub!(/.../, '\k')) assert_raise(RuntimeError) { "foo".sub!(/(?<x>o)/, '\k<x') } assert_equal('foo[bar]baz', "foobarbaz".sub!(/(b..)/, '[\0]')) |