aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmliframeelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-08-19 12:06:48 -0400
committerJosh Matthews <josh@joshmatthews.net>2024-09-25 09:56:30 -0400
commit28c27ff83527d7426199529227b9783afd4f95c2 (patch)
tree769eea078abcbd31c7bba7a889370dacfd90c8aa /components/script/dom/htmliframeelement.rs
parenta25beae1f1d71f0e41750819f88af82f384864d6 (diff)
downloadservo-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.rs6
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 {