@@ -64,15 +64,15 @@ struct PosixSemaphore {
6464
6565impl PosixSemaphore {
6666 pub fn new ( value : u32 ) -> io:: Result < Self > {
67- let mut sem: libc :: sem_t = unsafe { mem:: uninitialized ( ) } ;
67+ let mut sem = mem:: MaybeUninit :: uninit ( ) ;
6868 let r = unsafe {
69- libc:: sem_init ( & mut sem, 0 /* not shared */ , value)
69+ libc:: sem_init ( sem. as_mut_ptr ( ) , 0 /* not shared */ , value)
7070 } ;
7171 if r == -1 {
7272 return Err ( io:: Error :: last_os_error ( ) ) ;
7373 }
7474 Ok ( PosixSemaphore {
75- sem : UnsafeCell :: new ( sem) ,
75+ sem : UnsafeCell :: new ( unsafe { sem. assume_init ( ) } ) ,
7676 } )
7777 }
7878
@@ -150,7 +150,7 @@ enum RegNum {
150150 Sp = UNW_REG_SP as isize ,
151151}
152152
153- fn get_register ( cursor : & mut unw_cursor_t , num : RegNum ) -> Result < u64 , i32 > {
153+ fn get_register ( cursor : * mut unw_cursor_t , num : RegNum ) -> Result < u64 , i32 > {
154154 unsafe {
155155 let mut val = 0 ;
156156 let ret = unw_get_reg ( cursor, num as i32 , & mut val) ;
@@ -162,7 +162,7 @@ fn get_register(cursor: &mut unw_cursor_t, num: RegNum) -> Result<u64, i32> {
162162 }
163163}
164164
165- fn step ( cursor : & mut unw_cursor_t ) -> Result < bool , i32 > {
165+ fn step ( cursor : * mut unw_cursor_t ) -> Result < bool , i32 > {
166166 unsafe {
167167 // libunwind 1.1 seems to get confused and walks off the end of the stack. The last IP
168168 // it reports is 0, so we'll stop if we're there.
@@ -204,23 +204,23 @@ impl Sampler for LinuxSampler {
204204 }
205205
206206 let context = unsafe { SHARED_STATE . context . load ( Ordering :: SeqCst ) } ;
207- let mut cursor = unsafe { mem:: uninitialized ( ) } ;
208- let ret = unsafe { unw_init_local ( & mut cursor, context) } ;
207+ let mut cursor = mem:: MaybeUninit :: uninit ( ) ;
208+ let ret = unsafe { unw_init_local ( cursor. as_mut_ptr ( ) , context) } ;
209209 let result = if ret == UNW_ESUCCESS {
210210 let mut native_stack = NativeStack :: new ( ) ;
211211 loop {
212- let ip = match get_register ( & mut cursor, RegNum :: Ip ) {
212+ let ip = match get_register ( cursor. as_mut_ptr ( ) , RegNum :: Ip ) {
213213 Ok ( ip) => ip,
214214 Err ( _) => break ,
215215 } ;
216- let sp = match get_register ( & mut cursor, RegNum :: Sp ) {
216+ let sp = match get_register ( cursor. as_mut_ptr ( ) , RegNum :: Sp ) {
217217 Ok ( sp) => sp,
218218 Err ( _) => break ,
219219 } ;
220220 if native_stack
221221 . process_register ( ip as * mut _ , sp as * mut _ )
222222 . is_err ( ) ||
223- !step ( & mut cursor) . unwrap_or ( false )
223+ !step ( cursor. as_mut_ptr ( ) ) . unwrap_or ( false )
224224 {
225225 break ;
226226 }
0 commit comments