diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp
index 8acfbaa744a1b08c432431d854edd287541f80b2..0f2dc9cef6eebf9125ff4ee1f9529004d9537912 100644
--- a/modules/gui/qt/qt.cpp
+++ b/modules/gui/qt/qt.cpp
@@ -726,11 +726,14 @@ static void *Thread( void *obj )
     /* All the settings are in the .conf/.ini style */
 #ifdef _WIN32
     char *cConfigDir = config_GetUserDir( VLC_CONFIG_DIR );
-    QString configDir = cConfigDir;
-    free( cConfigDir );
-    if( configDir.endsWith( "\\vlc" ) )
-        configDir.chop( 4 ); /* the "\vlc" dir is added again by QSettings */
-    QSettings::setPath( QSettings::IniFormat, QSettings::UserScope, configDir );
+    if (likely(cConfigDir != nullptr))
+    {
+        QString configDir = cConfigDir;
+        free( cConfigDir );
+        if( configDir.endsWith( "\\vlc" ) )
+            configDir.chop( 4 ); /* the "\vlc" dir is added again by QSettings */
+        QSettings::setPath( QSettings::IniFormat, QSettings::UserScope, configDir );
+    }
 #endif
 
     p_intf->mainSettings = new QSettings(