Skip to content

Fix #29: Overflow on Starting with Minutes and Hours - #30

Draft
cornelius-koepp wants to merge 1 commit into
v1devfrom
fix/issue29-ko-count-down-start-overflow
Draft

Fix #29: Overflow on Starting with Minutes and Hours#30
cornelius-koepp wants to merge 1 commit into
v1devfrom
fix/issue29-ko-count-down-start-overflow

Conversation

@cornelius-koepp

Copy link
Copy Markdown
Member

Noch UNGETESTET
Fix für #29

Occurred on "Start mit Zeit" in {"Einheit Minuten", "Einheit Stunden"}
Maximum time was 255s
@philthepunk85

Copy link
Copy Markdown

Danke fürs schnelle Aufgreifen — die Ursache passt exakt zu den Messungen aus #29.

Zur Bestätigung der Mechanik: Der Überlauf entsteht durch das Compound Assignment. value *= 60 rechnet zwar in int (integer promotion), konvertiert das Ergebnis aber wieder nach uint8_t zurück ⇒ effektive Laufzeit = (Wert × 60) mod 256 Sekunden. Das deckt sich 1:1 mit allen Messpunkten aus dem Issue, auch mit denen, die dort zunächst unerklärlich wirkten.

Zwei Ergänzungen, die für die Release Notes relevant sein könnten:

1. Bei „Einheit Stunden" war die Funktion vollständig unbrauchbar, nicht nur oberhalb einer Grenze.
Wegen 3600 mod 256 = 16 ergaben sich konstant 16 Sekunden je Stunde: 1 h → 16 s, 2 h → 32 s, 3 h → 48 s. Anders als bei „Einheit Minuten" (dort waren Werte ≤ 4 korrekt) gab es im Stundenmodus keinen einzigen gültigen Wert.

2. Der Fix wirkt vollständig.
Ich habe den zweiten zeitverarbeitenden Pfad, case FCB_KoCHTimeOffset, gegengeprüft: Dort wird uint16_t mit festen Konstanten bis 3600 verwendet, ohne Multiplikation — kein Überlauf möglich. Weitere betroffene Stellen sehe ich nicht.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants