1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:58:11 +00:00

LibRegex: Allow ClearCaptureGroup to create new groups

Instead of leaking all capture groups and selectively clearing some,
simply avoid leaking things and only "define" the ones that need to
exist.
This *actually* implements the capture groups ECMA262 quirk.
Also adds the test removed in the previous commit (to avoid messing up
test runs across bisects).
This commit is contained in:
Ali Mohammad Pur 2022-01-21 20:08:47 +03:30 committed by Linus Groh
parent 704e0654b3
commit 97dde09170
2 changed files with 6 additions and 2 deletions

View file

@ -329,8 +329,11 @@ ALWAYS_INLINE ExecutionResult OpCode_ClearCaptureGroup::execute(MatchInput const
{
if (input.match_index < state.capture_group_matches.size()) {
auto& group = state.capture_group_matches[input.match_index];
if (id() < group.size())
group[id()].reset();
auto group_id = id();
if (group_id >= group.size())
group.resize(group_id + 1);
group[group_id].reset();
}
return ExecutionResult::Continue;
}