From 15b00a88ccef11a0129dab8eff4a77c0be2abcfb Mon Sep 17 00:00:00 2001 From: Steve Lhomme <robux4@ycbcr.xyz> Date: Thu, 1 Sep 2022 07:10:32 +0200 Subject: [PATCH] qt: servicesdiscoverymodel: fix usage of NULL config_GetUserDir result And fix leak --- .../gui/qt/network/servicesdiscoverymodel.cpp | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/modules/gui/qt/network/servicesdiscoverymodel.cpp b/modules/gui/qt/network/servicesdiscoverymodel.cpp index c96f738f6f06..4c62a8aef361 100644 --- a/modules/gui/qt/network/servicesdiscoverymodel.cpp +++ b/modules/gui/qt/network/servicesdiscoverymodel.cpp @@ -235,25 +235,30 @@ ServicesDiscoveryModel::Item &ServicesDiscoveryModel::Item::operator=( ServicesD entry = addon; if ( addon->psz_image_data ) { - QDir dir( config_GetUserDir( VLC_CACHE_DIR ) ); - dir.mkdir("art"); - dir.cd("art"); - dir.mkdir("qt-addon-covers"); - dir.cd("qt-addon-covers"); - - QString id = addons_uuid_to_psz( &addon->uuid ); - QString filename = QString("addon_thumbnail_%1.png").arg(id); - QString absoluteFilePath = dir.absoluteFilePath(filename); - - if ( !QFileInfo::exists( absoluteFilePath )) { - QPixmap pixmap; - pixmap.loadFromData( QByteArray::fromBase64( QByteArray( addon->psz_image_data ) ), - 0, - Qt::AutoColor - ); - pixmap.save(absoluteFilePath); + char *cDir = config_GetUserDir( VLC_CACHE_DIR ); + if (likely(cDir != nullptr)) + { + QDir dir( cDir ); + free(cDir); + dir.mkdir("art"); + dir.cd("art"); + dir.mkdir("qt-addon-covers"); + dir.cd("qt-addon-covers"); + + QString id = addons_uuid_to_psz( &addon->uuid ); + QString filename = QString("addon_thumbnail_%1.png").arg(id); + QString absoluteFilePath = dir.absoluteFilePath(filename); + + if ( !QFileInfo::exists( absoluteFilePath )) { + QPixmap pixmap; + pixmap.loadFromData( QByteArray::fromBase64( QByteArray( addon->psz_image_data ) ), + 0, + Qt::AutoColor + ); + pixmap.save(absoluteFilePath); + } + artworkUrl = QUrl::fromLocalFile( absoluteFilePath ); } - artworkUrl = QUrl::fromLocalFile( absoluteFilePath ); } else if ( addon->e_flags & ADDON_BROKEN ) artworkUrl = QUrl( ":/addons/addon_broken.svg" ); -- GitLab