Misc yanix fixes (#715)
* Correctly handle possibly misaligned pointers in readdir This reapplies #615, which was inadvertently reverted. * Tidy up unneeded `self::` qualifiers. * Make Dir's contents private. Also remove the `unsafe` from `impl_iter`. With `Dir`'s field being private, we can rely on the pointer being only what we've assigned to it. * Make `poll`'s timeout argument a `libc::c_int`. This clarifies that there are no subsequent conversions before calling the underlying libc API. * Use clock_gettime instead of clock_getres to get the time. * Mark FileType::from_raw as safe. It handles unknown values, so it can be marked safe.
This commit is contained in:
@@ -63,12 +63,12 @@ impl Dirent {
|
||||
|
||||
let sys_dirent = raw.as_mut_ptr() as *mut __wasi_dirent_t;
|
||||
unsafe {
|
||||
*sys_dirent = __wasi_dirent_t {
|
||||
sys_dirent.write_unaligned(__wasi_dirent_t {
|
||||
d_namlen: namlen.try_into()?,
|
||||
d_ino: self.ino,
|
||||
d_next: self.cookie,
|
||||
d_type: self.ftype.to_wasi(),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
let sys_name = unsafe { sys_dirent.offset(1) as *mut u8 };
|
||||
|
||||
Reference in New Issue
Block a user