mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-03 02:20:57 +02:00
Merge branch 'fix/lcd_get_frame_buffer' into 'master'
fix(lcd): uninitialized va_list Closes IDF-13876 See merge request espressif/esp-idf!41402
This commit is contained in:
@@ -170,7 +170,7 @@ esp_err_t mcpwm_generator_set_actions_on_timer_event(mcpwm_gen_handle_t gen, mcp
|
|||||||
mcpwm_gen_timer_event_action_t ev_act_itor = ev_act;
|
mcpwm_gen_timer_event_action_t ev_act_itor = ev_act;
|
||||||
bool invalid_utep = false;
|
bool invalid_utep = false;
|
||||||
bool invalid_dtez = false;
|
bool invalid_dtez = false;
|
||||||
va_list it;
|
va_list it = {};
|
||||||
va_start(it, ev_act);
|
va_start(it, ev_act);
|
||||||
while (ev_act_itor.event != MCPWM_TIMER_EVENT_INVALID) {
|
while (ev_act_itor.event != MCPWM_TIMER_EVENT_INVALID) {
|
||||||
invalid_utep = (timer->count_mode == MCPWM_TIMER_COUNT_MODE_UP_DOWN) &&
|
invalid_utep = (timer->count_mode == MCPWM_TIMER_COUNT_MODE_UP_DOWN) &&
|
||||||
@@ -208,7 +208,7 @@ esp_err_t mcpwm_generator_set_actions_on_compare_event(mcpwm_gen_handle_t gen, m
|
|||||||
mcpwm_oper_t *oper = gen->oper;
|
mcpwm_oper_t *oper = gen->oper;
|
||||||
mcpwm_group_t *group = oper->group;
|
mcpwm_group_t *group = oper->group;
|
||||||
mcpwm_gen_compare_event_action_t ev_act_itor = ev_act;
|
mcpwm_gen_compare_event_action_t ev_act_itor = ev_act;
|
||||||
va_list it;
|
va_list it = {};
|
||||||
va_start(it, ev_act);
|
va_start(it, ev_act);
|
||||||
while (ev_act_itor.comparator) {
|
while (ev_act_itor.comparator) {
|
||||||
mcpwm_ll_generator_set_action_on_compare_event(group->hal.dev, oper->oper_id, gen->gen_id,
|
mcpwm_ll_generator_set_action_on_compare_event(group->hal.dev, oper->oper_id, gen->gen_id,
|
||||||
@@ -236,7 +236,7 @@ esp_err_t mcpwm_generator_set_actions_on_brake_event(mcpwm_gen_handle_t gen, mcp
|
|||||||
mcpwm_oper_t *oper = gen->oper;
|
mcpwm_oper_t *oper = gen->oper;
|
||||||
mcpwm_group_t *group = oper->group;
|
mcpwm_group_t *group = oper->group;
|
||||||
mcpwm_gen_brake_event_action_t ev_act_itor = ev_act;
|
mcpwm_gen_brake_event_action_t ev_act_itor = ev_act;
|
||||||
va_list it;
|
va_list it = {};
|
||||||
va_start(it, ev_act);
|
va_start(it, ev_act);
|
||||||
while (ev_act_itor.brake_mode != MCPWM_OPER_BRAKE_MODE_INVALID) {
|
while (ev_act_itor.brake_mode != MCPWM_OPER_BRAKE_MODE_INVALID) {
|
||||||
mcpwm_ll_generator_set_action_on_brake_event(group->hal.dev, oper->oper_id, gen->gen_id,
|
mcpwm_ll_generator_set_action_on_brake_event(group->hal.dev, oper->oper_id, gen->gen_id,
|
||||||
|
@@ -393,14 +393,16 @@ esp_err_t esp_lcd_dpi_panel_get_frame_buffer(esp_lcd_panel_handle_t panel, uint3
|
|||||||
esp_lcd_dpi_panel_t *dpi_panel = __containerof(panel, esp_lcd_dpi_panel_t, base);
|
esp_lcd_dpi_panel_t *dpi_panel = __containerof(panel, esp_lcd_dpi_panel_t, base);
|
||||||
ESP_RETURN_ON_FALSE(fb_num && fb_num <= dpi_panel->num_fbs, ESP_ERR_INVALID_ARG, TAG, "invalid frame buffer number");
|
ESP_RETURN_ON_FALSE(fb_num && fb_num <= dpi_panel->num_fbs, ESP_ERR_INVALID_ARG, TAG, "invalid frame buffer number");
|
||||||
void **fb_itor = fb0;
|
void **fb_itor = fb0;
|
||||||
va_list args;
|
va_list args = {};
|
||||||
va_start(args, fb0);
|
va_start(args, fb0);
|
||||||
for (uint32_t i = 0; i < fb_num; i++) {
|
for (uint32_t i = 0; i < fb_num; i++) {
|
||||||
if (fb_itor) {
|
if (fb_itor) {
|
||||||
*fb_itor = dpi_panel->fbs[i];
|
*fb_itor = dpi_panel->fbs[i];
|
||||||
|
if (i < fb_num - 1) { /* Only get next arg if we're not at the last iteration */
|
||||||
fb_itor = va_arg(args, void **);
|
fb_itor = va_arg(args, void **);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
va_end(args);
|
va_end(args);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
@@ -463,14 +463,16 @@ esp_err_t esp_lcd_rgb_panel_get_frame_buffer(esp_lcd_panel_handle_t panel, uint3
|
|||||||
esp_rgb_panel_t *rgb_panel = __containerof(panel, esp_rgb_panel_t, base);
|
esp_rgb_panel_t *rgb_panel = __containerof(panel, esp_rgb_panel_t, base);
|
||||||
ESP_RETURN_ON_FALSE(fb_num && fb_num <= rgb_panel->num_fbs, ESP_ERR_INVALID_ARG, TAG, "invalid frame buffer number");
|
ESP_RETURN_ON_FALSE(fb_num && fb_num <= rgb_panel->num_fbs, ESP_ERR_INVALID_ARG, TAG, "invalid frame buffer number");
|
||||||
void **fb_itor = fb0;
|
void **fb_itor = fb0;
|
||||||
va_list args;
|
va_list args = {};
|
||||||
va_start(args, fb0);
|
va_start(args, fb0);
|
||||||
for (int i = 0; i < fb_num; i++) {
|
for (int i = 0; i < fb_num; i++) {
|
||||||
if (fb_itor) {
|
if (fb_itor) {
|
||||||
*fb_itor = rgb_panel->fbs[i];
|
*fb_itor = rgb_panel->fbs[i];
|
||||||
|
if (i < fb_num - 1) { /* Only get next arg if we're not at the last iteration */
|
||||||
fb_itor = va_arg(args, void **);
|
fb_itor = va_arg(args, void **);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
va_end(args);
|
va_end(args);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user