From 6987aca1ce27d8ff9080f9fd60854a8c54eb0b10 Mon Sep 17 00:00:00 2001 From: Song Ruo Jing Date: Mon, 26 Jan 2026 19:03:30 +0800 Subject: [PATCH] fix(ledc): prevent potential underflow causes multi-fade param calculation errors Closes https://github.com/espressif/esp-idf/issues/17980 --- components/esp_driver_ledc/src/ledc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/esp_driver_ledc/src/ledc.c b/components/esp_driver_ledc/src/ledc.c index 3a951c14e8f..e90e7a6e8ef 100644 --- a/components/esp_driver_ledc/src/ledc.c +++ b/components/esp_driver_ledc/src/ledc.c @@ -1828,6 +1828,10 @@ esp_err_t ledc_fill_multi_fade_param_list(ledc_mode_t speed_mode, ledc_channel_t scale = LEDC_LL_DUTY_SCALE_MAX; } step = duty_delta / scale; + // Ensure step * cycle doesn't exceed cycles_per_phase to prevent underflow to surplus_cycles_last_phase + if (step > cycles_per_phase) { + step = cycles_per_phase; + } } // Prepare for next phase calculation