From b4fbd04eec6b044a2bc65008daffcc24cd7b081b Mon Sep 17 00:00:00 2001 From: edrikk Date: Mon, 24 Feb 2025 21:22:36 -0500 Subject: [PATCH] Fix faulted zones clearing iteration logic As provided by warthog618 in https://github.com/nutechsoftware/alarmdecoder/issues/54 The restoration based on message.ready is buggy as it iterates over a list it is deleting from. which results in only half the faulted zones being cleared. The fix is to iterate over a copy of the list. --- alarmdecoder/zonetracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alarmdecoder/zonetracking.py b/alarmdecoder/zonetracking.py index 519454c..22af405 100644 --- a/alarmdecoder/zonetracking.py +++ b/alarmdecoder/zonetracking.py @@ -169,7 +169,7 @@ def update(self, message): # NOTE: SYSTEM messages provide inconsistent ready statuses. This # may need to be extended later for other panels. if message.ready and not message.text.startswith("SYSTEM"): - for zone in self._zones_faulted: + for zone in self._zones_faulted[:]: self._update_zone(zone, Zone.CLEAR) self._last_zone_fault = 0