summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2023-06-30 21:23:47 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2023-07-03 10:39:46 +0200
commit79abdd3cd496b472f0a6140fcf94e68ff79fda2b (patch)
treec90e6726f813452a7686067976fe51c123191120
parent9c9aca3b4393a1f1c8169c7b811e46ec5de25df9 (diff)
QPixmapCache: ignore insertion or searches with empty key
When a key for a pixmap cannot be generated, then the only meaningful way to indicate that failure is to return an empty string. Instead of plastering checks for the generated key being empty all over our styling code, reject attempts to insert a pixmap with an empty key string in the QPixmapCache, and fail to find immediately. Such a key makes no sense either way. [ChangeLog][Gui][QPixmapCache] Trying to insert or find a pixmap with an empty key string now always fails immediately. Pick-to: 6.6 Task-number: QTBUG-114473 Change-Id: I15bf8064ac7a4fe715722d98f2df2b8608809c7f Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
-rw-r--r--src/gui/image/qpixmapcache.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 4639858256..4637b38dd7 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -428,7 +428,7 @@ QPixmapCacheEntry::~QPixmapCacheEntry()
bool QPixmapCache::find(const QString &key, QPixmap *pixmap)
{
- if (!qt_pixmapcache_thread_test())
+ if (key.isEmpty() || !qt_pixmapcache_thread_test())
return false;
QPixmap *ptr = pm_cache()->object(key);
if (ptr && pixmap)
@@ -480,7 +480,7 @@ bool QPixmapCache::find(const Key &key, QPixmap *pixmap)
bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)
{
- if (!qt_pixmapcache_thread_test())
+ if (key.isEmpty() || !qt_pixmapcache_thread_test())
return false;
return pm_cache()->insert(key, pixmap, cost(pixmap));
}
@@ -562,7 +562,7 @@ void QPixmapCache::setCacheLimit(int n)
*/
void QPixmapCache::remove(const QString &key)
{
- if (!qt_pixmapcache_thread_test())
+ if (key.isEmpty() || !qt_pixmapcache_thread_test())
return;
pm_cache()->remove(key);
}