summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroya Fujinami <[email protected]>2023-12-28 23:20:03 +0900
committerGitHub <[email protected]>2023-12-28 23:20:03 +0900
commitd8702ddbfbe8cc7fc601a9a4d19842ef9c2b76c1 (patch)
tree2bc3b6960db2a47e53ef0e884c6416a03d14947f
parent87e8e961b7218a4afa90e3bff3727f121af3ccf1 (diff)
Fix [Bug #20083]: correct a cache point size for atomic groups (#9367)
-rw-r--r--regexec.c2
-rw-r--r--test/ruby/test_regexp.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/regexec.c b/regexec.c
index 4b02e7f9b5..8638013618 100644
--- a/regexec.c
+++ b/regexec.c
@@ -542,7 +542,7 @@ init_cache_opcodes(const regex_t* reg, OnigCacheOpcode* cache_opcodes, long* num
cache_opcodes->num_cache_points_at_outer_repeat = num_cache_points_at_repeat;\
cache_opcodes->num_cache_points_in_outer_repeat = 0;\
cache_opcodes->lookaround_nesting = lookaround_nesting;\
- cache_point += lookaround_nesting > 0 ? 2 : 1;\
+ cache_point += lookaround_nesting != 0 ? 2 : 1;\
cache_opcodes++;\
} while (0)
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index d4aae16037..b889b1a64e 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -1979,6 +1979,14 @@ class TestRegexp < Test::Unit::TestCase
end
end
+ def test_bug_20083 # [Bug #20083]
+ re = /([\s]*ABC)$/i
+ (1..100).each do |n|
+ text = "#{"0" * n}ABC"
+ assert text.match?(re)
+ end
+ end
+
def test_linear_time_p
assert_send [Regexp, :linear_time?, /a/]
assert_send [Regexp, :linear_time?, 'a']