From 7332833ecc31d4d32a317e7560a7d0378a3b0ad7 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Tue, 3 Feb 2026 08:51:06 +0100 Subject: [PATCH] Issue #2928 - Re-order imgLoader::RemoveFromCache Remove from tracker first before removing from cache, and if the cache queue is dirty, refresh it (causes a re-heap) before manipulating further. --- image/imgLoader.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/image/imgLoader.cpp b/image/imgLoader.cpp index f33719c66c..a33ce46f71 100644 --- a/image/imgLoader.cpp +++ b/image/imgLoader.cpp @@ -1944,17 +1944,20 @@ imgLoader::RemoveFromCache(imgCacheEntry* entry) "imgLoader::RemoveFromCache", "entry's uri", key.Spec()); - cache.Remove(key); - if (entry->HasNoProxies()) { LOG_STATIC_FUNC(gImgLog, "imgLoader::RemoveFromCache removing from tracker"); - if (mCacheTracker && queue.GetSize() > 0) { + if (queue.IsDirty()) { + queue.Refresh(); + } + if (mCacheTracker) { mCacheTracker->RemoveObject(entry); } queue.Remove(entry); } + cache.Remove(key); + entry->SetEvicted(true); request->SetIsInCache(false); AddToUncachedImages(request);