mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Fix a memory leak in components/script/script_runtime.rs
and add more leak suppressions (#33175)
* asan: Add suppression for known false positive Signed-off-by: ede1998 <online@erik-hennig.me> * fix: re-suppress lazy_static leaks lazy_static is still used by dependencies and still leaks from static variables. Signed-off-by: ede1998 <online@erik-hennig.me> * fix: Memory leak of Box<NetworkingTaskSource> Signed-off-by: ede1998 <online@erik-hennig.me> --------- Signed-off-by: ede1998 <online@erik-hennig.me>
This commit is contained in:
parent
c028b5c299
commit
e5caa725da
2 changed files with 13 additions and 3 deletions
|
@ -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)),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue