summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite0 <rabite@posteo.de>2020-03-02 23:13:00 +0100
committerrabite0 <rabite@posteo.de>2020-03-02 23:13:00 +0100
commitb298bf336757738e8c313d214e1dcc632475f9f7 (patch)
tree7a91f10f20e316cd9bef85c0b758e019d42c7b90
parent1ddb7a1593e78cfed4554c0926ffcb466a95c9f9 (diff)
use safer cast instead of transmute
-rw-r--r--src/files.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/files.rs b/src/files.rs
index f2c6210..de00a28 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -1173,11 +1173,12 @@ impl File {
let name: &OsStr = unsafe {
use std::ffi::CStr;
// &CStr -> &[u8]
- let s: &[u8] = std::mem::transmute::<&CStr, &[u8]>(direntry.file_name());
+ let s = direntry.file_name() as *const CStr;
+ let s: &[u8] = s.cast::<&[u8]>().as_ref().unwrap();
// &Cstr -> &OsStr, minus the NULL byte
let len = s.len();
- let s = &s[..len-1];
- std::mem::transmute::<&[u8], &OsStr>(s)
+ let s = &s[..len-1] as *const [u8];
+ s.cast::<&OsStr>().as_ref().unwrap()
};
// Avoid reallocation on push