From 583a4b1774a9458585fe896b7756e5e3e39beb32 Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 17 Feb 2008 15:35:09 +0000 Subject: [PATCH] * re.c (rb_reg_regsub): don't repeat repl twice with "X".sub!(/./, sprintf("\\%c", 255)). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ re.c | 1 + test/ruby/test_regexp.rb | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) 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 + + * 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 * 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!(/(?o)/, '\k