From 974fe36620748c96801d5806842ef6fa58ca947f Mon Sep 17 00:00:00 2001
From: Alaric Senat <dev.asenat@posteo.net>
Date: Thu, 2 Jun 2022 15:43:32 +0200
Subject: [PATCH] MediaLibrary: Set logger before acquiring file lock

File locking will attempt to log on failure (ie: the medialib is already
locked).
As `s_logger` null checks were removed [1], logging before constructing
`MediaLibrary` was dereferencing nullptr.

[1] fc002ae17f9b6544d784f609f3b6872544e5d40c
---
 src/MediaLibrary.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/MediaLibrary.cpp b/src/MediaLibrary.cpp
index cdc83374..f0beef6e 100644
--- a/src/MediaLibrary.cpp
+++ b/src/MediaLibrary.cpp
@@ -291,8 +291,13 @@ std::unique_ptr<MediaLibrary> MediaLibrary::create( const std::string& dbPath,
                                                     const std::string& mlFolderPath,
                                                     bool lockFile, const SetupConfig* cfg )
 {
-    std::unique_ptr<LockFile> lock;
+    if ( cfg != nullptr && cfg->logger != nullptr )
+        Log::SetLogger( cfg->logger );
+    else
+        Log::SetLogger( std::make_shared<IostreamLogger>() );
+    Log::setLogLevel( cfg != nullptr ? cfg->logLevel : LogLevel::Error );
 
+    std::unique_ptr<LockFile> lock;
     if ( lockFile )
     {
         lock = LockFile::lock( mlFolderPath );
@@ -321,11 +326,6 @@ MediaLibrary::MediaLibrary( const std::string& dbPath,
     , m_parser( this, &m_fsHolder )
     , m_discovererWorker( this, &m_fsHolder )
 {
-    if ( cfg != nullptr && cfg->logger != nullptr )
-        Log::SetLogger( cfg->logger );
-    else
-        Log::SetLogger( std::make_shared<IostreamLogger>() );
-    Log::setLogLevel( cfg != nullptr ? cfg->logLevel : LogLevel::Error );
     if ( cfg != nullptr )
     {
         for ( const auto& p : cfg->deviceListers )
-- 
GitLab