commit 3df155f203dd1f22085376ee0f86568f7f9bf63a
parent d6b16b0df00f97d78ce31fc47a8c8cfbaf68adcd
Author: Kuan-Wei, Chiu <visitorckw@gmail.com>
Date: Wed, 4 Oct 2023 06:27:11 +0800
Fix memory leak in realloc failure handling (#22188)
Diffstat:
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/quantum/painter/lvgl/qp_lvgl.c b/quantum/painter/lvgl/qp_lvgl.c
@@ -96,13 +96,14 @@ bool qp_lvgl_attach(painter_device_t device) {
// Set up lvgl display buffer
static lv_disp_draw_buf_t draw_buf;
// Allocate a buffer for 1/10 screen size
- const size_t count_required = driver->panel_width * driver->panel_height / 10;
- color_buffer = color_buffer ? realloc(color_buffer, sizeof(lv_color_t) * count_required) : malloc(sizeof(lv_color_t) * count_required);
- if (!color_buffer) {
+ const size_t count_required = driver->panel_width * driver->panel_height / 10;
+ void * new_color_buffer = realloc(color_buffer, sizeof(lv_color_t) * count_required);
+ if (!new_color_buffer) {
qp_dprintf("qp_lvgl_attach: fail (could not set up memory buffer)\n");
qp_lvgl_detach();
return false;
}
+ color_buffer = new_color_buffer;
memset(color_buffer, 0, sizeof(lv_color_t) * count_required);
// Initialize the display buffer.
lv_disp_draw_buf_init(&draw_buf, color_buffer, NULL, count_required);