Skip to content

Commit 745bb86

Browse files
committed
roll back the unsound borrowing API
1 parent 58e1e51 commit 745bb86

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

src/sys/tskbox.rs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ use std::ptr::NonNull;
22

33
pub struct TskBox<T> {
44
tsk: NonNull<T>,
5-
teardown: Option<unsafe extern "C" fn(*mut T) -> i32>,
6-
owning: bool,
5+
teardown: unsafe extern "C" fn(*mut T) -> i32,
76
}
87

98
impl<T> TskBox<T> {
@@ -14,11 +13,7 @@ impl<T> TskBox<T> {
1413
let x = unsafe { libc::malloc(std::mem::size_of::<T>()) as *mut T };
1514
let _ = init(x);
1615
let tsk = NonNull::new(x).unwrap();
17-
Self {
18-
tsk,
19-
teardown: Some(teardown),
20-
owning: true,
21-
}
16+
Self { tsk, teardown }
2217
}
2318

2419
pub fn as_ref(&self) -> &T {
@@ -40,14 +35,10 @@ impl<T> TskBox<T> {
4035

4136
impl<T> Drop for TskBox<T> {
4237
fn drop(&mut self) {
43-
if let Some(teardown) = self.teardown {
44-
unsafe {
45-
(teardown)(self.tsk.as_mut() as *mut T);
46-
}
47-
}
48-
if self.owning {
49-
unsafe { libc::free(self.tsk.as_ptr() as *mut libc::c_void) }
38+
unsafe {
39+
(self.teardown)(self.tsk.as_mut() as *mut T);
5040
}
41+
unsafe { libc::free(self.tsk.as_ptr() as *mut libc::c_void) }
5142
}
5243
}
5344

@@ -70,7 +61,7 @@ fn test_miri() {
7061

7162
let options = 0_i32;
7263

73-
let b = TskBox::new(
64+
let _ = TskBox::new(
7465
|x: *mut X| unsafe {
7566
(*x).data = options;
7667
0
@@ -93,7 +84,7 @@ fn test_table_collection_tskbox() {
9384
#[test]
9485
fn test_table_collection_tskbox_shared_ptr() {
9586
let flags: u32 = 0;
96-
let tables = TskBox::new(
87+
let _ = TskBox::new(
9788
|t: *mut super::bindings::tsk_table_collection_t| unsafe {
9889
super::bindings::tsk_table_collection_init(t, flags)
9990
},

0 commit comments

Comments
 (0)