Skip to content

Commit 5aad510

Browse files
author
Kai Luo
committed
Avoid misalign
1 parent 6e8a828 commit 5aad510

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

compiler/rustc_session/src/filesearch.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,20 @@ fn current_dll_path() -> Result<PathBuf, String> {
8585
#[cfg(target_os = "aix")]
8686
unsafe {
8787
let addr = current_dll_path as u64;
88-
let mut buffer = vec![0i8; 4096];
88+
let mut buffer = vec![std::mem::zeroed::<libc::ld_info>(); 64];
8989
loop {
90-
if libc::loadquery(libc::L_GETINFO, buffer.as_mut_ptr(), buffer.len() as u32) >= 0 {
90+
if libc::loadquery(
91+
libc::L_GETINFO,
92+
buffer.as_mut_ptr() as *mut i8,
93+
(std::mem::size_of::<libc::ld_info>() * buffer.len()) as u32,
94+
) >= 0
95+
{
9196
break;
9297
} else {
9398
if std::io::Error::last_os_error().raw_os_error().unwrap() != libc::ENOMEM {
9499
return Err("loadquery failed".into());
95100
}
96-
buffer.resize(buffer.len() * 2, 0i8);
101+
buffer.resize(buffer.len() * 2, std::mem::zeroed::<libc::ld_info>());
97102
}
98103
}
99104
let mut current = buffer.as_mut_ptr() as *mut libc::ld_info;

0 commit comments

Comments
 (0)