diff --git a/energyplugin/spotmarket/spotmarketmanager.cpp b/energyplugin/spotmarket/spotmarketmanager.cpp index 624bd23..9f59fa2 100644 --- a/energyplugin/spotmarket/spotmarketmanager.cpp +++ b/energyplugin/spotmarket/spotmarketmanager.cpp @@ -59,11 +59,20 @@ void SpotMarketManager::setEnabled(bool enabled) QUuid providerId = settings.value("providerId").toUuid(); if (providerId.isNull()) { qCDebug(dcNymeaEnergy()) << "SpotMarketManager: Currently no spot market provider configured. Selecting the first available."; - changeProvider(m_availableProviders.keys().first()); + if (!m_availableProviders.isEmpty()) + changeProvider(m_availableProviders.keys().first()); } else { changeProvider(providerId); } + // [upstream-fix] No provider selected (none registered, or the persisted providerId is + // unknown): enabling would dereference a null provider. Refuse and stay disabled. + if (!m_currentProvider) { + qCWarning(dcNymeaEnergy()) << "SpotMarketManager: No spot market provider available. Spot market stays disabled."; + settings.endGroup(); // SpotMarket + return; + } + m_currentProvider->enable(); qCInfo(dcNymeaEnergy()) << "SpotMarketManager: Enabled using" << m_currentProvider;