diff --git a/Userland/Libraries/LibWeb/HTML/StructuredSerialize.cpp b/Userland/Libraries/LibWeb/HTML/StructuredSerialize.cpp index ca1d70021d..62c4d43625 100644 --- a/Userland/Libraries/LibWeb/HTML/StructuredSerialize.cpp +++ b/Userland/Libraries/LibWeb/HTML/StructuredSerialize.cpp @@ -1142,8 +1142,16 @@ WebIDL::ExceptionOr structured_deserialize(JS::VM& vm, SerializationR if (!memory.has_value()) memory = DeserializationMemory { vm.heap() }; + // IMPLEMENTATION DEFINED: We need to make sure there's an execution context for target_realm on the stack before constructing these JS objects + auto& target_settings = Bindings::host_defined_environment_settings_object(target_realm); + target_settings.prepare_to_run_script(); + Deserializer deserializer(vm, target_realm, serialized.span(), *memory); - return deserializer.deserialize(); + + auto result = deserializer.deserialize(); + + target_settings.clean_up_after_running_script(); + return result; } }