LibRegex: Avoid generating ForkJumps when jumping to the next alt block

Fixes #2398.
This commit is contained in:
Ali Mohammad Pur 2024-11-17 16:01:15 +01:00 committed by Ali Mohammad Pur
commit 5a4d657a4e
Notes: github-actions[bot] 2024-11-17 19:13:35 +00:00
2 changed files with 11 additions and 3 deletions

View file

@ -1197,6 +1197,8 @@ void Optimizer::append_alternation(ByteCode& target, Span<ByteCode> alternatives
for (auto& patch : patch_locations) {
if (!patch.done && node_is(node, patch.source_ip)) {
auto value = static_cast<ByteCodeValueType>(target.size() - patch.target_ip - 1);
if (value == 0)
target[patch.target_ip - 1] = static_cast<ByteCodeValueType>(OpCodeId::Jump);
target[patch.target_ip] = value;
patch.done = true;
}