diff --git a/src/fs/fields.rs b/src/fs/fields.rs index 2ab874ba..9f9aef10 100644 --- a/src/fs/fields.rs +++ b/src/fs/fields.rs @@ -194,8 +194,8 @@ pub enum Size { /// - #[derive(Copy, Clone)] pub struct DeviceIDs { - pub major: u32, - pub minor: u32, + pub major: i64, + pub minor: i64, } diff --git a/src/fs/file.rs b/src/fs/file.rs index f497bd54..c90d980f 100644 --- a/src/fs/file.rs +++ b/src/fs/file.rs @@ -336,9 +336,11 @@ impl<'dir> File<'dir> { else if self.is_char_device() || self.is_block_device() { let device_ids = self.metadata.rdev(); + // SAFETY: `major()` and `minor()` can return an unsigned integer + // of at most 32bits, so an `i64` is going to accomodate them well f::Size::DeviceIDs(f::DeviceIDs { - major: unsafe { major(device_ids) }, - minor: unsafe { minor(device_ids) }, + major: unsafe { major(device_ids) as i64 }, + minor: unsafe { minor(device_ids) as i64 }, }) } else {