From 3ac1503a32b217bd229bd858543f093e859526e0 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 8 Mar 2021 15:37:29 +1100 Subject: [PATCH] diskmanager: ensure file is deleted and ignore accesses from non-existent hashes --- app/render/diskmanager.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/render/diskmanager.cpp b/app/render/diskmanager.cpp index d50035447..328f9479f 100644 --- a/app/render/diskmanager.cpp +++ b/app/render/diskmanager.cpp @@ -224,6 +224,10 @@ bool DiskCacheFolder::ClearCache() void DiskCacheFolder::Accessed(const QByteArray &hash) { + if (!disk_data_.contains(hash)) { + return; + } + disk_data_[hash].access_time = QDateTime::currentMSecsSinceEpoch(); } @@ -306,7 +310,7 @@ QByteArray DiskCacheFolder::DeleteLeastRecent() auto hash_to_delete = disk_data_.begin(); for (auto it=disk_data_.begin()+1; it!=disk_data_.end(); it++) { - if (hash_to_delete.value().access_time > it.value().access_time) { + if (it->access_time < hash_to_delete->access_time) { hash_to_delete = it; } } @@ -315,6 +319,8 @@ QByteArray DiskCacheFolder::DeleteLeastRecent() HashTime ht = hash_to_delete.value(); disk_data_.erase(hash_to_delete); + QFile::remove(ht.file_name); + consumption_ -= ht.file_size; return hash;