File tree Expand file tree Collapse file tree 1 file changed +6
-3
lines changed
Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -129,7 +129,7 @@ pub(crate) struct Waker;
129129mod 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
You can’t perform that action at this time.
0 commit comments