diff options
author | Keegan McAllister <kmcallister@mozilla.com> | 2013-07-31 17:45:11 -0700 |
---|---|---|
committer | Keegan McAllister <kmcallister@mozilla.com> | 2013-07-31 17:54:26 -0700 |
commit | e661ce66b62f084b3e4dc962fa0e9fe99fb5a648 (patch) | |
tree | f46ebb66c939d840fc0c96ea6788f3e270221ca3 | |
parent | feee4ddcb23a072e60bfe76cbaa738215e065ad6 (diff) | |
download | servo-e661ce66b62f084b3e4dc962fa0e9fe99fb5a648.tar.gz servo-e661ce66b62f084b3e4dc962fa0e9fe99fb5a648.zip |
Fix freeze scope extension warning
Fixes #455 (for now)
Also add a comment about how what we're doing here is unsafe (for reasons that
are mostly unrelated to the warning)
-rw-r--r-- | src/components/script/script_task.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index f769e4b282a..33c99683a03 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -608,7 +608,16 @@ impl ScriptTask { let HtmlParserResult {root, js_port, style_port, iframe_port} = html_parsing_result; // Create the window and document objects. - let window = Window::new(&mut *page, self.chan.clone(), self.compositor); + let window = { + // Need an extra block here due to Rust #6248 + // + // FIXME(Servo #655): Unrelated to the Rust #6248 warning, this is fundamentally + // unsafe because the box could go away or get moved while we're holding this raw + // pointer. We think it's safe here because the main task will hold onto the box, + // and because the current refcounting implementation of @ doesn't move. + let page = &mut *page; + Window::new(page, self.chan.clone(), self.compositor) + }; let document = HTMLDocument::new(root, Some(window)); // Tie the root into the document. |