@@ -394,7 +394,7 @@ impl File {
394394 if attr. file_type ( ) . is_reparse_point ( ) {
395395 let mut b = AlignedReparseBuf :: new ( [ 0 ; c:: MAXIMUM_REPARSE_DATA_BUFFER_SIZE ] ) ;
396396 if let Ok ( ( _, buf) ) = self . reparse_point ( & mut b) {
397- attr. reparse_tag = buf. ReparseTag ;
397+ attr. reparse_tag = ( * buf) . ReparseTag ;
398398 }
399399 }
400400 Ok ( attr)
@@ -1345,9 +1345,10 @@ fn symlink_junction_inner(original: &Path, junction: &Path) -> io::Result<()> {
13451345 let h = f. as_inner ( ) . as_raw_handle ( ) ;
13461346
13471347 unsafe {
1348- let mut data = [ 0u8 ; c:: MAXIMUM_REPARSE_DATA_BUFFER_SIZE ] ;
1349- let db = data. as_mut_ptr ( ) as * mut c:: REPARSE_MOUNTPOINT_DATA_BUFFER ;
1350- let buf = & mut ( * db) . ReparseTarget as * mut c:: WCHAR ;
1348+ let mut data = AlignedReparseBuf :: new ( [ 0u8 ; c:: MAXIMUM_REPARSE_DATA_BUFFER_SIZE ] ) ;
1349+ let data_ptr = data. value . as_mut_ptr ( ) ;
1350+ let db = data_ptr. cast :: < c:: REPARSE_MOUNTPOINT_DATA_BUFFER > ( ) ;
1351+ let buf = ptr:: addr_of_mut!( ( * db) . ReparseTarget ) . cast :: < c:: WCHAR > ( ) ;
13511352 let mut i = 0 ;
13521353 // FIXME: this conversion is very hacky
13531354 let v = br"\??\" ;
@@ -1367,7 +1368,7 @@ fn symlink_junction_inner(original: &Path, junction: &Path) -> io::Result<()> {
13671368 cvt ( c:: DeviceIoControl (
13681369 h as * mut _ ,
13691370 c:: FSCTL_SET_REPARSE_POINT ,
1370- data . as_ptr ( ) as * mut _ ,
1371+ data_ptr . cast ( ) ,
13711372 ( * db) . ReparseDataLength + 8 ,
13721373 ptr:: null_mut ( ) ,
13731374 0 ,
0 commit comments