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>
bb10
Volker Hilsheimer 2023-06-30 21:23:47 +02:00
parent 9c9aca3b43
commit 79abdd3cd4
1 changed files with 3 additions and 3 deletions

View File

@ -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);
}