diff options
Diffstat (limited to 'components/script/script_runtime.rs')
-rw-r--r-- | components/script/script_runtime.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/components/script/script_runtime.rs b/components/script/script_runtime.rs index bc1f8f7e1bc..3f9cdf8a1bb 100644 --- a/components/script/script_runtime.rs +++ b/components/script/script_runtime.rs @@ -444,6 +444,7 @@ pub struct Runtime { rt: RustRuntime, pub microtask_queue: Rc<MicrotaskQueue>, job_queue: *mut JobQueue, + networking_task_src: Option<Box<NetworkingTaskSource>>, } impl Drop for Runtime { @@ -561,12 +562,13 @@ unsafe fn new_rt_and_cx_with_parent( networking_task_src.queue_unconditionally(task).is_ok() } + let mut networking_task_src_ptr = std::ptr::null_mut(); if let Some(source) = networking_task_source { - let networking_task_src = Box::new(source); + networking_task_src_ptr = Box::into_raw(Box::new(source)); InitDispatchToEventLoop( cx, Some(dispatch_to_event_loop), - Box::into_raw(networking_task_src) as *mut c_void, + networking_task_src_ptr as *mut c_void, ); } @@ -721,6 +723,8 @@ unsafe fn new_rt_and_cx_with_parent( rt: runtime, microtask_queue, job_queue, + networking_task_src: (!networking_task_src_ptr.is_null()) + .then(|| Box::from_raw(networking_task_src_ptr)), } } |