From a173592b400dc164dca414794d8136cdeefa153f Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 26 Apr 2022 15:03:01 -0400 Subject: [PATCH] Tracker: Fix memory leak in IconCache::SetIcon. How often this would have occurred before thumbnail support I'm not sure, but at least now that we have thumbnails, the icons are changed out with not insignificant frequency, especially on read-only filesystems. --- src/kits/tracker/IconCache.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/kits/tracker/IconCache.cpp b/src/kits/tracker/IconCache.cpp index 0206c46652..cf075c9110 100644 --- a/src/kits/tracker/IconCache.cpp +++ b/src/kits/tracker/IconCache.cpp @@ -292,18 +292,24 @@ void IconCacheEntry::SetIcon(BBitmap* bitmap, IconDrawMode mode, icon_size size, bool /*create*/) { + BBitmap** icon = NULL; if (mode == kNormalIcon) { if (size == B_MINI_ICON) - fMiniIcon = bitmap; + icon = &fMiniIcon; else - fLargeIcon = bitmap; + icon = &fLargeIcon; } else if (mode == kSelectedIcon) { if (size == B_MINI_ICON) - fHighlightedMiniIcon = bitmap; + icon = &fHighlightedMiniIcon; else - fHighlightedLargeIcon = bitmap; - } else + icon = &fHighlightedLargeIcon; + } + if (icon == NULL) TRESPASS(); + + if ((*icon) != NULL) + delete *icon; + *icon = bitmap; }