summaryrefslogtreecommitdiff
path: root/quantum/painter/lvgl
diff options
context:
space:
mode:
authorKuan-Wei, Chiu <visitorckw@gmail.com>2023-10-04 06:27:11 +0800
committerGitHub <noreply@github.com>2023-10-04 09:27:11 +1100
commit3df155f203dd1f22085376ee0f86568f7f9bf63a (patch)
treeb380c5cf87f02e04bc485491ce1b8b8f552470d8 /quantum/painter/lvgl
parentd6b16b0df00f97d78ce31fc47a8c8cfbaf68adcd (diff)
Fix memory leak in realloc failure handling (#22188)
Diffstat (limited to 'quantum/painter/lvgl')
-rw-r--r--quantum/painter/lvgl/qp_lvgl.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/quantum/painter/lvgl/qp_lvgl.c b/quantum/painter/lvgl/qp_lvgl.c
index 2e433d7761..877b2652c6 100644
--- 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);