Avoid an index-out-of-bounds error in ScriptMemoryFailsafe.

Fixes #11059.
Fixes #11400.
Fixes #11481.
Fixes #11671.
Fixes #11682.
This commit is contained in:
Ms2ger 2016-06-09 14:49:55 +02:00
parent 77e0089c12
commit 7455dc4a50
2 changed files with 10 additions and 2 deletions

View file

@ -108,6 +108,12 @@ impl BrowsingContext {
Root::from_ref(&self.history.borrow()[self.active_index.get()].document)
}
pub fn maybe_active_document(&self) -> Option<Root<Document>> {
self.history.borrow().get(self.active_index.get()).map(|entry| {
Root::from_ref(&*entry.document)
})
}
pub fn active_window(&self) -> Root<Window> {
Root::from_ref(self.active_document().window())
}

View file

@ -422,8 +422,10 @@ impl<'a> Drop for ScriptMemoryFailsafe<'a> {
Some(owner) => {
let context = owner.browsing_context.get();
for context in context.iter() {
let window = context.active_window();
window.clear_js_runtime_for_script_deallocation();
if let Some(document) = context.maybe_active_document() {
let window = document.window();
window.clear_js_runtime_for_script_deallocation();
}
}
}
None => (),