summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--re.c1
-rw-r--r--test/ruby/test_regexp.rb2
3 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d5a8cdd954..45894d8478 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
diff --git a/re.c b/re.c
index 7bc5702f0e..e7dfd62ddb 100644
--- a/re.c
+++ b/re.c
@@ -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]'))