aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/script_task.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-04-23 14:10:21 -0400
committerbors-servo <release+servo@mozilla.com>2014-04-23 14:10:21 -0400
commit7326df044c8f1badf8c37a16cdf31caf446b66df (patch)
tree85d169a0aeec990bee5de0742dee2cfa1126ea74 /src/components/script/script_task.rs
parent00f4340a8dae08f63cab426cb719dbfdeacd9a74 (diff)
parentb38f7d26d1666ae0801cef46b8c4f7cd0a8ee4be (diff)
downloadservo-7326df044c8f1badf8c37a16cdf31caf446b66df.tar.gz
servo-7326df044c8f1badf8c37a16cdf31caf446b66df.zip
auto merge of #2203 : mbrubeck/servo/back-crash, r=jdm
This fixes two `RefCell<T> is already borrowed` failures when reloading an existing pipeline, both caused by functions trying to modify `Pipeline::url` or `ScriptTask::url` while a reference to a previous borrow is still in scope. Note: After applying this patch, there are some painting issues after navigating back.
Diffstat (limited to 'src/components/script/script_task.rs')
-rw-r--r--src/components/script/script_task.rs21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs
index a78108c057a..5775e089c7a 100644
--- a/src/components/script/script_task.rs
+++ b/src/components/script/script_task.rs
@@ -817,19 +817,16 @@ impl ScriptTask {
is a bug.");
let page = page_tree.page();
- {
- let mut page_url = page.mut_url();
- let last_loaded_url = replace(&mut *page_url, None);
- for loaded in last_loaded_url.iter() {
- let (ref loaded, needs_reflow) = *loaded;
- if *loaded == url {
- *page_url = Some((loaded.clone(), false));
- if needs_reflow {
- page.damage(ContentChangedDocumentDamage);
- page.reflow(ReflowForDisplay, self.chan.clone(), self.compositor);
- }
- return;
+ let last_loaded_url = replace(&mut *page.mut_url(), None);
+ for loaded in last_loaded_url.iter() {
+ let (ref loaded, needs_reflow) = *loaded;
+ if *loaded == url {
+ *page.mut_url() = Some((loaded.clone(), false));
+ if needs_reflow {
+ page.damage(ContentChangedDocumentDamage);
+ page.reflow(ReflowForDisplay, self.chan.clone(), self.compositor);
}
+ return;
}
}