* regexp.c (re_compile_pattern): allow zero times match for

non-greedy range repeatation. [ruby-core:30613]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@28192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2010-06-07 06:14:46 +00:00
parent 3a2319f3e0
commit 9f9388e57e
4 changed files with 19 additions and 3 deletions

View file

@ -1,3 +1,8 @@
Mon Jun 7 12:27:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
* regexp.c (re_compile_pattern): allow zero times match for
non-greedy range repeatation. [ruby-core:30613]
Sat Jun 5 13:31:15 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* lib/matrix.rb: Matrix library copied from 1.9. It is now identical

View file

@ -2152,6 +2152,12 @@ re_compile_pattern(pattern, size, bufp)
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

View file

@ -467,4 +467,9 @@ class TestRegexp < Test::Unit::TestCase
assert_equal("1", $1)
assert_equal(" " * 4999999, $2)
end
def test_range_greedy
/wo{0,3}?/ =~ "woo"
assert_equal("w", $&)
end
end

View file

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.8"
#define RUBY_RELEASE_DATE "2010-06-05"
#define RUBY_RELEASE_DATE "2010-06-07"
#define RUBY_VERSION_CODE 188
#define RUBY_RELEASE_CODE 20100605
#define RUBY_RELEASE_CODE 20100607
#define RUBY_PATCHLEVEL -1
#define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 8
#define RUBY_RELEASE_YEAR 2010
#define RUBY_RELEASE_MONTH 6
#define RUBY_RELEASE_DAY 5
#define RUBY_RELEASE_DAY 7
#define NO_STRING_LITERAL_CONCATENATION 1
#ifdef RUBY_EXTERN