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