Skip to content

Commit

Permalink
regexp: fix non greedy quantizers with zero length matches
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabrice Bellard committed May 30, 2024
1 parent d86aaf0 commit 36911f0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
14 changes: 6 additions & 8 deletions libregexp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1488,15 +1488,13 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir)

if (dbuf_error(&s->byte_code))
goto out_of_memory;
/* the spec tells that if there is no advance when
running the atom after the first quant_min times,
then there is no match. We remove this test when we
are sure the atom always advances the position. */
add_zero_advance_check = re_need_check_advance(s->byte_code.buf + last_atom_start,
s->byte_code.size - last_atom_start);
} else {
add_zero_advance_check = FALSE;
}
/* the spec tells that if there is no advance when
running the atom after the first quant_min times,
then there is no match. We remove this test when we
are sure the atom always advances the position. */
add_zero_advance_check = re_need_check_advance(s->byte_code.buf + last_atom_start,
s->byte_code.size - last_atom_start);

{
int len, pos;
Expand Down
2 changes: 2 additions & 0 deletions tests/test_builtin.js
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,8 @@ function test_regexp()
assert(a, ["a", undefined]);
a = /(?:|[\w])+([0-9])/.exec("123a23");
assert(a, ["123a23", "3"]);
a = /()*?a/.exec(",");
assert(a, null);
}

function test_symbol()
Expand Down

0 comments on commit 36911f0

Please sign in to comment.