File tree Expand file tree Collapse file tree 1 file changed +8
-2
lines changed
src/tools/miri/tests/pass-dep/concurrency Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,10 @@ use std::thread;
99use windows_sys:: Win32 :: Foundation :: { HANDLE , WAIT_OBJECT_0 } ;
1010use windows_sys:: Win32 :: System :: Threading :: { INFINITE , WaitForSingleObject } ;
1111
12+ #[ derive( Copy , Clone ) ]
13+ struct UnsafeSendWrapper < T > ( T ) ;
14+ unsafe impl < T > Send for UnsafeSendWrapper < T > { }
15+
1216fn main ( ) {
1317 static FLAG : AtomicBool = AtomicBool :: new ( false ) ;
1418
@@ -17,10 +21,12 @@ fn main() {
1721 thread:: yield_now ( ) ;
1822 }
1923 } )
20- . into_raw_handle ( ) as HANDLE ;
24+ . into_raw_handle ( ) ;
25+ let blocker = UnsafeSendWrapper ( blocker as HANDLE ) ;
2126
2227 let waiter = move || unsafe {
23- assert_eq ! ( WaitForSingleObject ( blocker, INFINITE ) , WAIT_OBJECT_0 ) ;
28+ let blocker = blocker; // circumvent per-field capturing
29+ assert_eq ! ( WaitForSingleObject ( blocker. 0 , INFINITE ) , WAIT_OBJECT_0 ) ;
2430 } ;
2531
2632 let waiter1 = thread:: spawn ( waiter) ;
You can’t perform that action at this time.
0 commit comments