Fix [Bug 19273], set correct value to `outer_repeat` on `OP_REPEAT` (#7035)

This commit is contained in:
TSUYUSATO Kitsune 2022-12-28 20:03:25 +09:00 коммит произвёл GitHub
Родитель 3931921607
Коммит b726d60c98
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -615,7 +615,7 @@ init_cache_index_table(regex_t* reg, OnigCacheIndex *table)
if (reg->repeat_range[mem].lower == 0) {
table->addr = pbegin;
table->num = num - current_mem_num;
table->outer_repeat = mem;
table->outer_repeat = -1;
num++;
table++;
}

Просмотреть файл

@ -1721,6 +1721,11 @@ class TestRegexp < Test::Unit::TestCase
end;
end
def test_bug_19273 # [Bug #19273]
pattern = /(?:(?:-?b)|(?:-?(?:1_?(?:0_?)*)?0))(?::(?:(?:-?b)|(?:-?(?:1_?(?:0_?)*)?0))){0,3}/
assert_equal("10:0:0".match(pattern)[0], "10:0:0")
end
def test_linear_time_p
assert_send [Regexp, :linear_time?, /a/]
assert_send [Regexp, :linear_time?, 'a']