From 23b18a841714a4dc8931fda0f73014699d2cbbbe Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Wed, 20 May 2015 07:55:22 +1000 Subject: [PATCH] Handle case where a page fetch completes after pipeline exits. --- components/script/script_task.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/components/script/script_task.rs b/components/script/script_task.rs index fcc0615213a..0a9d97b4540 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -1062,12 +1062,15 @@ impl ScriptTask { /// Kick off the document and frame tree creation process using the result. fn handle_page_fetch_complete(&self, id: PipelineId, subpage: Option, response: LoadResponse) { - // Any notification received should refer to an existing, in-progress load that is tracked. let idx = self.incomplete_loads.borrow().iter().position(|load| { load.pipeline_id == id && load.parent_info.map(|info| info.1) == subpage - }).unwrap(); - let load = self.incomplete_loads.borrow_mut().remove(idx); - self.load(response, load); + }); + // The matching in progress load structure may not exist if + // the pipeline exited before the page load completed. + if let Some(idx) = idx { + let load = self.incomplete_loads.borrow_mut().remove(idx); + self.load(response, load); + } } /// Handles a request for the window title.