@@ -394,7 +394,7 @@ impl File {
394
394
if attr. file_type ( ) . is_reparse_point ( ) {
395
395
let mut b = AlignedReparseBuf :: new ( [ 0 ; c:: MAXIMUM_REPARSE_DATA_BUFFER_SIZE ] ) ;
396
396
if let Ok ( ( _, buf) ) = self . reparse_point ( & mut b) {
397
- attr. reparse_tag = buf. ReparseTag ;
397
+ attr. reparse_tag = ( * buf) . ReparseTag ;
398
398
}
399
399
}
400
400
Ok ( attr)
@@ -1345,9 +1345,10 @@ fn symlink_junction_inner(original: &Path, junction: &Path) -> io::Result<()> {
1345
1345
let h = f. as_inner ( ) . as_raw_handle ( ) ;
1346
1346
1347
1347
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 > ( ) ;
1351
1352
let mut i = 0 ;
1352
1353
// FIXME: this conversion is very hacky
1353
1354
let v = br"\??\" ;
@@ -1367,7 +1368,7 @@ fn symlink_junction_inner(original: &Path, junction: &Path) -> io::Result<()> {
1367
1368
cvt ( c:: DeviceIoControl (
1368
1369
h as * mut _ ,
1369
1370
c:: FSCTL_SET_REPARSE_POINT ,
1370
- data . as_ptr ( ) as * mut _ ,
1371
+ data_ptr . cast ( ) ,
1371
1372
( * db) . ReparseDataLength + 8 ,
1372
1373
ptr:: null_mut ( ) ,
1373
1374
0 ,
0 commit comments