Skip to content

Commit 0eec8e4

Browse files
committed
robustness: prevent negative transitions
fix for a corner case that might lead to unexpected math overflow
1 parent 2c0063d commit 0eec8e4

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

wled00/led.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ void handleTransitions()
194194
if (transitionActive && transitionDelayTemp > 0)
195195
{
196196
float tper = (millis() - transitionStartTime)/(float)transitionDelayTemp;
197-
if (tper >= 1.0f)
197+
if ((tper >= 1.0f) || (tper < 0.0f)) // WLEDMM also catch "<0" case, that may happen when millis() rolls over
198198
{
199199
strip.setTransitionMode(false);
200200
// restore (global) transition time if not called from UDP notifier or single/temporary transition from JSON (also playlist)
@@ -207,7 +207,7 @@ void handleTransitions()
207207
}
208208
if (tper - tperLast < 0.004f) return;
209209
tperLast = tper;
210-
briT = briOld + ((bri - briOld) * tper);
210+
briT = briOld + ((int(bri) - int(briOld)) * tper); // WLEDMM avoid undefined behaviour when briOld < bri
211211

212212
applyBri();
213213
}

0 commit comments

Comments
 (0)