mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-24 00:24:38 +00:00
LibJS: Fix crash in bytecode generator on https://twinings.co.uk/
If the current block has already been terminated, we should just skip creating a per-iteration environment.
This commit is contained in:
committed by
Andreas Kling
parent
c5afe70f77
commit
9a7e6158af
@@ -1042,9 +1042,12 @@ Bytecode::CodeGenerationErrorOr<Optional<ScopedOperand>> ForStatement::generate_
|
||||
}
|
||||
};
|
||||
|
||||
// CreatePerIterationEnvironment where lastIterationEnv is the variable
|
||||
// scope created above for bound identifiers
|
||||
generate_per_iteration_bindings();
|
||||
if (m_init) {
|
||||
// CreatePerIterationEnvironment where lastIterationEnv is the variable
|
||||
// scope created above for bound identifiers
|
||||
generate_per_iteration_bindings();
|
||||
}
|
||||
|
||||
body_block_ptr = &generator.make_block();
|
||||
|
||||
if (m_update)
|
||||
@@ -1082,10 +1085,11 @@ Bytecode::CodeGenerationErrorOr<Optional<ScopedOperand>> ForStatement::generate_
|
||||
generator.end_breakable_scope();
|
||||
generator.end_continuable_scope();
|
||||
|
||||
// CreatePerIterationEnvironment where lastIterationEnv is the environment
|
||||
// created by the previous CreatePerIterationEnvironment setup
|
||||
generate_per_iteration_bindings();
|
||||
if (!generator.is_current_block_terminated()) {
|
||||
// CreatePerIterationEnvironment where lastIterationEnv is the environment
|
||||
// created by the previous CreatePerIterationEnvironment setup
|
||||
generate_per_iteration_bindings();
|
||||
|
||||
if (m_update) {
|
||||
generator.emit<Bytecode::Op::Jump>(Bytecode::Label { *update_block_ptr });
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user