diff --git a/core/src/cache.rs b/core/src/cache.rs index 3a5385b4..65d31ba0 100644 --- a/core/src/cache.rs +++ b/core/src/cache.rs @@ -83,15 +83,22 @@ impl Cache { pub fn save_file(&self, file: FileId, contents: &mut dyn Read) { if self.use_audio_cache { let path = self.file_path(file); - mkdir_existing(path.parent().unwrap()).unwrap(); - let mut cache_file = File::create(path) - match cache_file { - Ok(file) => ::std::io::copy(contents, &mut file).unwrap(), - Err(error) => { - self.use_audio_cache = false - }, + 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 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(); + } }; } }