From 5f11ddea50c12ea43b7ab57400c211c7f1f671b2 Mon Sep 17 00:00:00 2001 From: Laurent Louf Date: Tue, 4 Aug 2020 12:25:32 +0200 Subject: [PATCH] Main issue is probably when copying the content to the file, not during the file creation, but handle both cases just to be sure --- core/src/cache.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/core/src/cache.rs b/core/src/cache.rs index 65d31ba..194240e 100644 --- a/core/src/cache.rs +++ b/core/src/cache.rs @@ -85,21 +85,23 @@ impl Cache { let path = self.file_path(file); mkdir_existing(path.parent().unwrap()).unwrap(); - let file_create = File::create(path); - match file_create { - Ok(mut cache_file) => { - ::std::io::copy(contents, &mut cache_file).unwrap(); - } - Err(_error) => { - ::std::fs::remove_dir_all(&self.root.join("files")).unwrap(); - mkdir_existing(&self.root.join("files")).unwrap(); + let mut cache_file = File::create(path).unwrap_or_else(|_e| { + ::std::fs::remove_dir_all(&self.root.join("files")).unwrap(); + mkdir_existing(&self.root.join("files")).unwrap(); - let path = self.file_path(file); - mkdir_existing(path.parent().unwrap()).unwrap(); - let mut cache_file = File::create(path).unwrap(); - ::std::io::copy(contents, &mut cache_file).unwrap(); - } - }; + let path = self.file_path(file); + mkdir_existing(path.parent().unwrap()).unwrap(); + File::create(path).unwrap() + }); + ::std::io::copy(contents, &mut cache_file).unwrap_or_else(|_e| { + ::std::fs::remove_dir_all(&self.root.join("files")).unwrap(); + mkdir_existing(&self.root.join("files")).unwrap(); + + let path = self.file_path(file); + mkdir_existing(path.parent().unwrap()).unwrap(); + let mut file = File::create(path).unwrap(); + ::std::io::copy(contents, &mut file).unwrap() + }); } } }