From c4531b5074ecd8b486823c59aa8ae5b5ecd7015b Mon Sep 17 00:00:00 2001 From: Julien CLEMENT Date: Sat, 17 Dec 2022 20:31:14 +0100 Subject: [PATCH] struct size hacking shenanigans Signed-off-by: Julien CLEMENT --- .gitignore | 2 +- src/fs/iso/iso9660.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 636f6a8..848e0ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ /target -iso +/iso *.iso *.o julios diff --git a/src/fs/iso/iso9660.rs b/src/fs/iso/iso9660.rs index 9eb5c56..4938e59 100644 --- a/src/fs/iso/iso9660.rs +++ b/src/fs/iso/iso9660.rs @@ -4,7 +4,7 @@ pub struct IsoPathTable { ext_size: u8, // Extended attribute record length data_blk: u8, // File data block index parent_dir: u16, // Number of the parent dir - // idf: [char] // Directory name, of size Self::idf_len + idf: [char; 0] // Directory name, of size Self::idf_len } impl IsoPathTable { @@ -16,10 +16,10 @@ impl IsoPathTable { } } - pub fn get_idf(&self) -> *const char { - let ptr: *const IsoPathTable = self; + #[allow(unaligned_references)] + pub fn get_idf(&self) -> &[char] { unsafe { - ptr.offset(1) as *const char + core::slice::from_raw_parts(self.idf.as_ptr(), self.idf_len as usize) } } } \ No newline at end of file