Skip to content

Commit 820fdbd

Browse files
committed
Properly drop Thread in test's thread_waker
1 parent 5be53f1 commit 820fdbd

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

tests/util/mod.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ pub(crate) struct Waker;
129129
mod thread_waker {
130130
use std::sync::Arc;
131131
use std::task::{RawWaker, RawWakerVTable, Waker};
132-
use std::thread::Thread;
132+
use std::thread::{self, Thread};
133133

134134
static VTABLE: RawWakerVTable = RawWakerVTable::new(clone, wake, wake_by_ref, drop);
135135

@@ -153,8 +153,11 @@ mod thread_waker {
153153
unsafe { (&*data.cast::<Thread>()).unpark() };
154154
}
155155

156-
unsafe fn drop(_: *const ()) {
157-
unreachable!("dropped a waker instead of waking it");
156+
unsafe fn drop(data: *const ()) {
157+
std::mem::drop(unsafe { Arc::<Thread>::from_raw(data.cast()) });
158+
if !thread::panicking() {
159+
unreachable!("dropped a waker instead of waking it");
160+
}
158161
}
159162
}
160163

0 commit comments

Comments
 (0)