ruby-changes:7848
From: akr <ko1@a...>
Date: Tue, 16 Sep 2008 01:01:26 +0900 (JST)
Subject: [ruby-changes:7848] Ruby:r19369 (trunk): * re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII
akr 2008-09-16 01:01:08 +0900 (Tue, 16 Sep 2008) New Revision: 19369 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19369 Log: * re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII incompatible characters properly. Modified files: trunk/ChangeLog trunk/re.c trunk/test/ruby/enc/test_utf16.rb Index: re.c =================================================================== --- re.c (revision 19368) +++ re.c (revision 19369) @@ -2860,34 +2860,34 @@ case '*': case '.': case '\\': case '?': case '+': case '^': case '$': case '#': - *t++ = '\\'; + t += rb_enc_mbcput('\\', t, enc); break; case ' ': - *t++ = '\\'; - *t++ = ' '; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput(' ', t, enc); continue; case '\t': - *t++ = '\\'; - *t++ = 't'; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput('t', t, enc); continue; case '\n': - *t++ = '\\'; - *t++ = 'n'; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput('n', t, enc); continue; case '\r': - *t++ = '\\'; - *t++ = 'r'; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput('r', t, enc); continue; case '\f': - *t++ = '\\'; - *t++ = 'f'; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput('f', t, enc); continue; case '\v': - *t++ = '\\'; - *t++ = 'v'; + t += rb_enc_mbcput('\\', t, enc); + t += rb_enc_mbcput('v', t, enc); continue; } - *t++ = c; + t += rb_enc_mbcput(c, t, enc); } rb_str_resize(tmp, t - RSTRING_PTR(tmp)); OBJ_INFECT(tmp, str); Index: ChangeLog =================================================================== --- ChangeLog (revision 19368) +++ ChangeLog (revision 19369) @@ -1,3 +1,8 @@ +Tue Sep 16 00:57:56 2008 Tanaka Akira <akr@f...> + + * re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII + incompatible characters properly. + Tue Sep 16 00:51:59 2008 NARUSE, Yui <naruse@r...> * encoding.c (Encoding#base_encoding): removed. [ruby-dev:36270] Index: test/ruby/enc/test_utf16.rb =================================================================== --- test/ruby/enc/test_utf16.rb (revision 19368) +++ test/ruby/enc/test_utf16.rb (revision 19369) @@ -355,4 +355,10 @@ assert_equal("", sl.chop) assert_equal("", sb.chop) end + + def test_regexp_escape + s = "\0*".force_encoding("UTF-16BE") + r = Regexp.new(Regexp.escape(s)) + assert(r =~ s) + end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/