From 6f6670747f445f0c84301da990451296eb8dbc54 Mon Sep 17 00:00:00 2001 From: lorefnon Date: Fri, 19 Jan 2024 19:10:05 +0530 Subject: [PATCH] Prevent usage of reference across ref boundary --- src/file_cache.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/file_cache.rs b/src/file_cache.rs index 289867bd..9672c19e 100644 --- a/src/file_cache.rs +++ b/src/file_cache.rs @@ -101,15 +101,17 @@ impl FileCache { log::trace!("Cache answer without filesystem lookup for {:?}", path); return Ok(Arc::clone(&cached.content)); } - match app_state + let modified_res = app_state .file_system - .modified_since(app_state, path, cached.last_check_time(), true) - .await - { + .modified_since(app_state, path, cached.last_check_time(), true); + drop(cached); + match modified_res.await { Ok(false) => { log::trace!("Cache answer with filesystem metadata read for {:?}", path); - cached.update_check_time(); - return Ok(Arc::clone(&cached.content)); + if let Some(cached) = self.cache.get(path) { + cached.update_check_time(); + return Ok(Arc::clone(&cached.content)); + } } Ok(true) => log::trace!("{path:?} was changed, updating cache..."), Err(e) => log::trace!("Cannot read metadata of {path:?}, re-loading it: {e:#}"),