servo: Merge #4777 - Adds borrow_for_script_deallocation and unsafe_mut_js_info method to avo (from dmarcos:issue4692); r=jdm
...id 'DOMRefCell already mutably borrowed' messages. This is just a temporary fix until the Rust standard library allows borrowing already-borrowed RefCell values during unwinding. It also removes LiveDOMReferences destructor that it's a no-op but it contains an assert that was being violated causing an endless cycle of destructor calls ending up in a stack overflow. Source-Repo: https://github.com/servo/servo Source-Revision: a7e29939a1df679bd865573dc71f7ba65f0268c4
This commit is contained in:
@@ -248,11 +248,13 @@ impl<'a> Drop for ScriptMemoryFailsafe<'a> {
|
||||
fn drop(&mut self) {
|
||||
match self.owner {
|
||||
Some(owner) => {
|
||||
let page = owner.page.borrow_mut();
|
||||
for page in page.iter() {
|
||||
*page.mut_js_info() = None;
|
||||
unsafe {
|
||||
let page = owner.page.borrow_for_script_deallocation();
|
||||
for page in page.iter() {
|
||||
*page.unsafe_mut_js_info() = None;
|
||||
}
|
||||
*owner.js_context.borrow_for_script_deallocation() = None;
|
||||
}
|
||||
*owner.js_context.borrow_mut() = None;
|
||||
}
|
||||
None => (),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user