X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fbootstrap%2Futil.rs;h=0ebabbd5ca5c04599f065a52f7654a93e6232fcc;hb=07608bd60ecfa75a72c13372c1545665ab147f2c;hp=3a00e258e00e5b142ac82b3e73ad6f21c7e7ce61;hpb=301348077d364d536d5f7cb57a72b85d9966ded6;p=rust.git diff --git a/src/bootstrap/util.rs b/src/bootstrap/util.rs index 3a00e258e00..0ebabbd5ca5 100644 --- a/src/bootstrap/util.rs +++ b/src/bootstrap/util.rs @@ -197,9 +197,11 @@ fn to_u16s>(s: S) -> io::Result> { ptr::null_mut(), ); - let mut data = [0u8; MAXIMUM_REPARSE_DATA_BUFFER_SIZE as usize]; - let db = data.as_mut_ptr() as *mut REPARSE_MOUNTPOINT_DATA_BUFFER; - let buf = &mut (*db).ReparseTarget as *mut u16; + #[repr(C, align(8))] + struct Align8(T); + let mut data = Align8([0u8; MAXIMUM_REPARSE_DATA_BUFFER_SIZE as usize]); + let db = data.0.as_mut_ptr() as *mut REPARSE_MOUNTPOINT_DATA_BUFFER; + let buf = core::ptr::addr_of_mut!((*db).ReparseTarget) as *mut u16; let mut i = 0; // FIXME: this conversion is very hacky let v = br"\??\"; @@ -219,7 +221,7 @@ fn to_u16s>(s: S) -> io::Result> { let res = DeviceIoControl( h as *mut _, FSCTL_SET_REPARSE_POINT, - data.as_ptr() as *mut _, + db.cast(), (*db).ReparseDataLength + 8, ptr::null_mut(), 0,