fix: unhandled panic when get "last modified" on dir listing module
Diff
src/directory_listing.rs | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
@@ -438,6 +438,7 @@ fn sort_file_entries(files: &mut [FileEntry], order_code: u8) -> SortingAttr<'_>
}
}
fn parse_last_modified(modified: SystemTime) -> Result<DateTime<Local>> {
let since_epoch = modified.duration_since(UNIX_EPOCH)?;
@@ -449,10 +450,16 @@ fn parse_last_modified(modified: SystemTime) -> Result<DateTime<Local>> {
let utc_dt = NaiveDateTime::from_timestamp(
let utc_dt = NaiveDateTime::from_timestamp_opt(
since_epoch.as_secs() as i64,
since_epoch.subsec_nanos() as u32,
);
let local_dt = DateTime::<Utc>::from_utc(utc_dt, Utc).with_timezone(&Local);
Ok(local_dt)
match utc_dt {
Some(utc_dt) => Ok(DateTime::<Utc>::from_utc(utc_dt, Utc).with_timezone(&Local)),
None => Err(anyhow!(
"out-of-range number of seconds and/or invalid nanosecond"
)),
}
}