diff options
author | Josh Matthews <josh@joshmatthews.net> | 2024-08-19 12:06:48 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2024-09-25 09:56:30 -0400 |
commit | 28c27ff83527d7426199529227b9783afd4f95c2 (patch) | |
tree | 769eea078abcbd31c7bba7a889370dacfd90c8aa /components/script/dom/htmliframeelement.rs | |
parent | a25beae1f1d71f0e41750819f88af82f384864d6 (diff) | |
download | servo-28c27ff83527d7426199529227b9783afd4f95c2.tar.gz servo-28c27ff83527d7426199529227b9783afd4f95c2.zip |
Fix panic when about:blank iframe is removed from the document immediately after being added to it.
Diffstat (limited to 'components/script/dom/htmliframeelement.rs')
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 95b180a8712..db3fa28ba14 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -299,9 +299,9 @@ impl HTMLIFrameElement { if mode == ProcessingMode::FirstTime && (src.is_empty() || src == "about:blank") { let task = IframeElementMicrotask { elem: DomRoot::from_ref(self), + about_blank_pipeline: self.about_blank_pipeline_id.get().unwrap(), }; ScriptThread::await_stable_state(Microtask::IframeElement(task)); - //self.iframe_load_event_steps(self.about_blank_pipeline_id.get().unwrap()); return; } @@ -814,12 +814,14 @@ impl VirtualMethods for HTMLIFrameElement { #[derive(JSTraceable, MallocSizeOf)] pub struct IframeElementMicrotask { elem: DomRoot<HTMLIFrameElement>, + #[no_trace] + about_blank_pipeline: PipelineId, } impl MicrotaskRunnable for IframeElementMicrotask { fn handler(&self) { self.elem - .iframe_load_event_steps(self.elem.about_blank_pipeline_id.get().unwrap(), true); + .iframe_load_event_steps(self.about_blank_pipeline, true); } fn enter_realm(&self) -> JSAutoRealm { |