[upstream-fix] SpotMarketManager::setEnabled : refuser plutôt que déréférencer un fournisseur nul
`setEnabled(true)` appelait `m_currentProvider->enable()` sans vérifier qu'un fournisseur avait été retenu. Deux chemins y mènent : - l'identifiant persisté (`SpotMarket/providerId`) ne correspond à aucun fournisseur enregistré : `changeProvider()` échoue, le pointeur reste nul ; - aucun fournisseur n'est enregistré : `keys().first()` sur une liste vide. Le premier est atteignable en amont (fournisseur retiré entre deux versions, réglage reporté). Le second le devient dès qu'aucun fournisseur n'est compilé. Correctif isolé : l'activation est refusée en `qCWarning` et le gestionnaire reste désactivé. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a45b10b457
commit
9574d4b266
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user