fix: `Sensors::cleanDallasInstances()` fixed

This commit is contained in:
Yurii
2024-11-10 01:32:42 +03:00
parent 5aea80e630
commit 6a9bd9673a

View File

@@ -119,7 +119,10 @@ protected:
} }
void cleanDallasInstances() { void cleanDallasInstances() {
for (auto& [gpio, instance] : this->dallasInstances) { // for (auto& [gpio, instance] : this->dallasInstances) {
auto it = this->dallasInstances.begin();
while (it != this->dallasInstances.end()) {
auto gpio = it->first;
bool instanceUsed = false; bool instanceUsed = false;
for (uint8_t sensorId = 0; sensorId <= Sensors::getMaxSensorId(); sensorId++) { for (uint8_t sensorId = 0; sensorId <= Sensors::getMaxSensorId(); sensorId++) {
@@ -135,8 +138,8 @@ protected:
} }
} }
if (!instanceUsed) {; if (!instanceUsed) {
this->dallasInstances.erase(gpio); it = this->dallasInstances.erase(it);
this->owInstances.erase(gpio); this->owInstances.erase(gpio);
this->dallasSearchTime.erase(gpio); this->dallasSearchTime.erase(gpio);
this->dallasPolling.erase(gpio); this->dallasPolling.erase(gpio);
@@ -145,6 +148,8 @@ protected:
Log.sinfoln(FPSTR(L_SENSORS_DALLAS), F("Stopped on GPIO %hhu"), gpio); Log.sinfoln(FPSTR(L_SENSORS_DALLAS), F("Stopped on GPIO %hhu"), gpio);
continue; continue;
} }
it++;
} }
} }