diff options
author | rabite0 <rabite@posteo.de> | 2020-03-02 23:13:00 +0100 |
---|---|---|
committer | rabite0 <rabite@posteo.de> | 2020-03-02 23:13:00 +0100 |
commit | b298bf336757738e8c313d214e1dcc632475f9f7 (patch) | |
tree | 7a91f10f20e316cd9bef85c0b758e019d42c7b90 | |
parent | 1ddb7a1593e78cfed4554c0926ffcb466a95c9f9 (diff) |
use safer cast instead of transmute
-rw-r--r-- | src/files.rs | 7 |
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 |