ruby-changes:6367
From: akr <ko1@a...>
Date: Sat, 5 Jul 2008 08:33:26 +0900 (JST)
Subject: [ruby-changes:6367] Ruby:r17882 (trunk): * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.
akr 2008-07-05 08:33:04 +0900 (Sat, 05 Jul 2008) New Revision: 17882 Modified files: trunk/ChangeLog trunk/re.c trunk/test/ruby/test_m17n.rb Log: * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used. fixed [ruby-core:17279]. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17882 Index: re.c =================================================================== --- re.c (revision 17881) +++ re.c (revision 17882) @@ -2163,6 +2163,12 @@ break; } + case 'p': /* \p{Hiragana} */ + if (!*encp) { + *encp = enc; + } + goto escape_asis; + default: /* \n, \\, \d, \9, etc. */ escape_asis: smallbuf[0] = '\\'; Index: ChangeLog =================================================================== --- ChangeLog (revision 17881) +++ ChangeLog (revision 17882) @@ -1,3 +1,8 @@ +Sat Jul 5 08:29:47 2008 Tanaka Akira <akr@f...> + + * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used. + fixed [ruby-core:17279]. + Fri Jul 4 23:12:53 2008 Masaki Suketa <masaki.suketa@n...> * ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 17881) +++ test/ruby/test_m17n.rb (revision 17882) @@ -493,6 +493,25 @@ assert_match(/[[:space:]]/, "\u{00a0}") end + def test_regexp_property + s = '\p{Hiragana}'.force_encoding("euc-jp") + assert_equal(Encoding::EUC_JP, s.encoding) + r = nil + assert_nothing_raised { + r = Regexp.new(s) + } + assert(r.fixed_encoding?) + assert_match(r, "\xa4\xa2".force_encoding("euc-jp")) + + r = eval('/\p{Hiragana}/'.force_encoding("euc-jp")) + assert(r.fixed_encoding?) + assert_match(r, "\xa4\xa2".force_encoding("euc-jp")) + + r = /\p{Hiragana}/e + assert(r.fixed_encoding?) + assert_match(r, "\xa4\xa2".force_encoding("euc-jp")) + end + def test_regexp_embed_preprocess r1 = /\xa4\xa2/e r2 = /#{r1}/ -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/