ruby-changes:16256
From: shyouhei <ko1@a...>
Date: Tue, 8 Jun 2010 18:33:09 +0900 (JST)
Subject: [ruby-changes:16256] Ruby:r28224 (ruby_1_8_7): merge revision(s) 28192:
shyouhei 2010-06-08 18:33:00 +0900 (Tue, 08 Jun 2010) New Revision: 28224 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28224 Log: merge revision(s) 28192: * regexp.c (re_compile_pattern): allow zero times match for non-greedy range repeatation. [ruby-core:30613] Modified files: branches/ruby_1_8_7/ChangeLog branches/ruby_1_8_7/regex.c branches/ruby_1_8_7/test/ruby/test_regexp.rb branches/ruby_1_8_7/version.h Index: ruby_1_8_7/ChangeLog =================================================================== --- ruby_1_8_7/ChangeLog (revision 28223) +++ ruby_1_8_7/ChangeLog (revision 28224) @@ -1,3 +1,8 @@ +Tue Jun 8 18:31:02 2010 NARUSE, Yui <naruse@r...> + + * regexp.c (re_compile_pattern): allow zero times match for + non-greedy range repeatation. [ruby-core:30613] + Tue Jun 8 18:08:18 2010 URABE Shyouhei <shyouhei@r...> * Makefile.in (fake.rb): double the backslash. Index: ruby_1_8_7/version.h =================================================================== --- ruby_1_8_7/version.h (revision 28223) +++ ruby_1_8_7/version.h (revision 28224) @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2010-06-08" #define RUBY_VERSION_CODE 187 #define RUBY_RELEASE_CODE 20100608 -#define RUBY_PATCHLEVEL 288 +#define RUBY_PATCHLEVEL 289 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 Index: ruby_1_8_7/test/ruby/test_regexp.rb =================================================================== --- ruby_1_8_7/test/ruby/test_regexp.rb (revision 28223) +++ ruby_1_8_7/test/ruby/test_regexp.rb (revision 28224) @@ -457,4 +457,9 @@ assert_equal("1", $1) assert_equal(" " * 4999999, $2) end + + def test_range_greedy + /wo{0,3}?/ =~ "woo" + assert_equal("w", $&) + end end Index: ruby_1_8_7/regex.c =================================================================== --- ruby_1_8_7/regex.c (revision 28223) +++ ruby_1_8_7/regex.c (revision 28224) @@ -2152,6 +2152,12 @@ more at the end of the loop. */ unsigned nbytes = upper_bound == 1 ? 10 : 20; + if (lower_bound == 0 && greedy == 0) { + GET_BUFFER_SPACE(3); + insert_jump(try_next, laststart, b + 3, b); + b += 3; + } + GET_BUFFER_SPACE(nbytes); /* Initialize lower bound of the `succeed_n', even though it will be set during matching by its -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/