From ab077625b90be77cb1b27aead1e089fc25c03311 Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Sat, 28 Feb 2026 17:02:27 +0100 Subject: [PATCH] StatusVector: Handle (hypothetical) situation when one image is overwritten by itself --- common/StatusVector.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/common/StatusVector.cpp b/common/StatusVector.cpp index a0af404a..112d60d5 100644 --- a/common/StatusVector.cpp +++ b/common/StatusVector.cpp @@ -25,11 +25,23 @@ void StatusVector::AddElement(uint32_t id, float val) { if (id >= content.size()) { content.resize(id + 1, NAN); } + + const float old_val = content[id]; + const bool had_old = std::isfinite(old_val); + content[id] = val; - sum += val; - count += 1; - mean = sum / count; + if (had_old) { + sum += static_cast(val) - static_cast(old_val); + } else { + sum += val; + count += 1; + } + + if (count > 0) + mean = static_cast(sum / static_cast(count)); + else + mean = NAN; } std::optional StatusVector::GetElement(uint32_t id) const {