summaryrefslogtreecommitdiff
path: root/libregexp.c
diff options
context:
space:
mode:
authorFabrice Bellard <fabrice@bellard.org>2024-05-30 16:41:37 +0200
committerFabrice Bellard <fabrice@bellard.org>2024-05-30 16:41:37 +0200
commit36911f0d3ab1a4c190a4d5cbe7c2db225a455389 (patch)
tree65c977a5a2efb15f1217591e17a506b40d462493 /libregexp.c
parentd86aaf0b8fdc5f5dc6a997b772312217f4efca79 (diff)
downloadquickjs-36911f0d3ab1a4c190a4d5cbe7c2db225a455389.tar.gz
quickjs-36911f0d3ab1a4c190a4d5cbe7c2db225a455389.zip
regexp: fix non greedy quantizers with zero length matches
Diffstat (limited to 'libregexp.c')
-rw-r--r--libregexp.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/libregexp.c b/libregexp.c
index 1091506..a2d56a7 100644
--- a/libregexp.c
+++ b/libregexp.c
@@ -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;