From 8ef64676fe09b1c37f510a8f6e875b0d69016bf6 Mon Sep 17 00:00:00 2001 From: Peter Limkilde Svendsen <peter.limkilde@gmail.com> Date: Tue, 8 Sep 2020 20:31:00 +0200 Subject: [PATCH] Use stricter/simpler type handling --- src/header/time/mod.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs index d77402f4..114c7f8c 100644 --- a/src/header/time/mod.rs +++ b/src/header/time/mod.rs @@ -128,20 +128,22 @@ pub unsafe extern "C" fn asctime_r(tm: *const tm, buf: *mut c_char) -> *mut c_ch ); assert!(0 <= tm_wday && tm_wday <= 6, OUT_OF_RANGE_MESSAGE); - let result = core::fmt::write( - &mut platform::UnsafeStringWriter(buf as *mut u8), + // At this point, we can safely use the values as given. + let write_result = core::fmt::write( + // buf may be either `*mut u8` or `*mut i8` + &mut platform::UnsafeStringWriter(buf.cast()), format_args!( "{:.3} {:.3}{:3} {:02}:{:02}:{:02} {}\n", - DAY_NAMES[tm_wday as usize], - MON_NAMES[tm_mon as usize], - tm_mday as usize, - tm_hour as usize, - tm_min as usize, - tm_sec as usize, - (1900 + tm_year) + DAY_NAMES[usize::try_from(tm_wday).unwrap()], + MON_NAMES[usize::try_from(tm_mon).unwrap()], + tm_mday, + tm_hour, + tm_min, + tm_sec, + 1900 + tm_year ), ); - match result { + match write_result { Ok(_) => buf, Err(_) => { platform::errno = EIO; -- GitLab