From c31145b3a0b3082ca6427aeda53c68a1d6097293 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 4 Jun 2016 14:47:25 +0200 Subject: [PATCH] refs #649, made base URL static const to resolve threading issue (crash when shutting down) --- src/blackcore/db/databasereader.h | 2 +- src/blackcore/db/icaodatareader.cpp | 7 ++++--- src/blackcore/db/icaodatareader.h | 3 ++- src/blackcore/db/modeldatareader.cpp | 7 ++++--- src/blackcore/db/modeldatareader.h | 3 ++- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/blackcore/db/databasereader.h b/src/blackcore/db/databasereader.h index 0d5d49287..729424474 100644 --- a/src/blackcore/db/databasereader.h +++ b/src/blackcore/db/databasereader.h @@ -120,7 +120,7 @@ namespace BlackCore protected: CDatabaseReaderConfigList m_config; //!< DB reder configuration - BlackMisc::Network::CUrl m_sharedUrl; //!< URL for checking if alive + BlackMisc::Network::CUrl m_sharedUrl; //!< URL for shared files QString m_statusMessage; //!< Returned status message from watchdog bool m_canConnect = false; //!< Successful connection? mutable QReadWriteLock m_statusLock; //!< Lock diff --git a/src/blackcore/db/icaodatareader.cpp b/src/blackcore/db/icaodatareader.cpp index 3b58078a7..bf5b7b5d6 100644 --- a/src/blackcore/db/icaodatareader.cpp +++ b/src/blackcore/db/icaodatareader.cpp @@ -41,7 +41,8 @@ namespace BlackCore CIcaoDataReader::CIcaoDataReader(QObject *owner, const CDatabaseReaderConfigList &confg) : CDatabaseReader(owner, confg, "CIcaoDataReader") { - // void + // init to avoid threading issues + getBaseUrl(); } CAircraftIcaoCodeList CIcaoDataReader::getAircraftIcaoCodes() const @@ -209,9 +210,9 @@ namespace BlackCore } } - CUrl CIcaoDataReader::getBaseUrl() const + const CUrl &CIcaoDataReader::getBaseUrl() { - const CUrl baseUrl(sApp->getGlobalSetup().getDbIcaoReaderUrl()); + static const CUrl baseUrl(sApp->getGlobalSetup().getDbIcaoReaderUrl()); return baseUrl; } diff --git a/src/blackcore/db/icaodatareader.h b/src/blackcore/db/icaodatareader.h index 21983f944..a219c1485 100644 --- a/src/blackcore/db/icaodatareader.h +++ b/src/blackcore/db/icaodatareader.h @@ -156,7 +156,8 @@ namespace BlackCore void updateReaderUrl(const BlackMisc::Network::CUrl &url); //! Base URL - BlackMisc::Network::CUrl getBaseUrl() const; + //! \threadsafe + static const BlackMisc::Network::CUrl &getBaseUrl(); //! URL BlackMisc::Network::CUrl getAircraftIcaoUrl(bool shared = false) const; diff --git a/src/blackcore/db/modeldatareader.cpp b/src/blackcore/db/modeldatareader.cpp index b0cdd1c32..83dd8d6ea 100644 --- a/src/blackcore/db/modeldatareader.cpp +++ b/src/blackcore/db/modeldatareader.cpp @@ -41,7 +41,8 @@ namespace BlackCore CModelDataReader::CModelDataReader(QObject *owner, const CDatabaseReaderConfigList &config) : CDatabaseReader(owner, config, "CModelDataReader") { - // void + // init to avoid threading issues + getBaseUrl(); } CLiveryList CModelDataReader::getLiveries() const @@ -463,9 +464,9 @@ namespace BlackCore return CDatabaseReader::isChangedUrl(CUrl(), this->getBaseUrl()); } - CUrl CModelDataReader::getBaseUrl() const + const CUrl &CModelDataReader::getBaseUrl() { - const CUrl baseUrl(sApp->getGlobalSetup().getDbModelReaderUrl()); + static const CUrl baseUrl(sApp->getGlobalSetup().getDbModelReaderUrl()); return baseUrl; } diff --git a/src/blackcore/db/modeldatareader.h b/src/blackcore/db/modeldatareader.h index 12106a6f5..a36a02933 100644 --- a/src/blackcore/db/modeldatareader.h +++ b/src/blackcore/db/modeldatareader.h @@ -159,7 +159,8 @@ namespace BlackCore mutable QReadWriteLock m_lockModels; //! Base URL - BlackMisc::Network::CUrl getBaseUrl() const; + //! \threadsafe + static const BlackMisc::Network::CUrl &getBaseUrl(); //! URL livery web service BlackMisc::Network::CUrl getLiveryUrl(bool shared = false) const;