diff options
author | bors-servo <release+servo@mozilla.com> | 2014-04-23 14:10:21 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-04-23 14:10:21 -0400 |
commit | 7326df044c8f1badf8c37a16cdf31caf446b66df (patch) | |
tree | 85d169a0aeec990bee5de0742dee2cfa1126ea74 /src/components/script/script_task.rs | |
parent | 00f4340a8dae08f63cab426cb719dbfdeacd9a74 (diff) | |
parent | b38f7d26d1666ae0801cef46b8c4f7cd0a8ee4be (diff) | |
download | servo-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.rs | 21 |
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; } } |