mirror of
https://github.com/servo/servo.git
synced 2025-06-24 17:14:33 +01:00
Make sure RefCell borrows are temporary.
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.
This commit is contained in:
parent
c6bdc7b7f2
commit
b38f7d26d1
2 changed files with 11 additions and 13 deletions
|
@ -202,7 +202,8 @@ impl Pipeline {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reload(&self) {
|
pub fn reload(&self) {
|
||||||
self.url.borrow().clone().map(|url| {
|
let url = self.url.borrow().clone();
|
||||||
|
url.map(|url| {
|
||||||
self.load(url);
|
self.load(url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -810,13 +810,11 @@ impl ScriptTask {
|
||||||
is a bug.");
|
is a bug.");
|
||||||
let page = page_tree.page();
|
let page = page_tree.page();
|
||||||
|
|
||||||
{
|
let last_loaded_url = replace(&mut *page.mut_url(), None);
|
||||||
let mut page_url = page.mut_url();
|
|
||||||
let last_loaded_url = replace(&mut *page_url, None);
|
|
||||||
for loaded in last_loaded_url.iter() {
|
for loaded in last_loaded_url.iter() {
|
||||||
let (ref loaded, needs_reflow) = *loaded;
|
let (ref loaded, needs_reflow) = *loaded;
|
||||||
if *loaded == url {
|
if *loaded == url {
|
||||||
*page_url = Some((loaded.clone(), false));
|
*page.mut_url() = Some((loaded.clone(), false));
|
||||||
if needs_reflow {
|
if needs_reflow {
|
||||||
page.damage(ContentChangedDocumentDamage);
|
page.damage(ContentChangedDocumentDamage);
|
||||||
page.reflow(ReflowForDisplay, self.chan.clone(), self.compositor);
|
page.reflow(ReflowForDisplay, self.chan.clone(), self.compositor);
|
||||||
|
@ -824,7 +822,6 @@ impl ScriptTask {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let cx = self.js_runtime.cx();
|
let cx = self.js_runtime.cx();
|
||||||
// Create the window and document objects.
|
// Create the window and document objects.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue