~ruther/qmk_firmware

3df155f203dd1f22085376ee0f86568f7f9bf63a — Kuan-Wei, Chiu 1 year, 8 months ago d6b16b0
Fix memory leak in realloc failure handling (#22188)

1 files changed, 4 insertions(+), 3 deletions(-)

M quantum/painter/lvgl/qp_lvgl.c
M quantum/painter/lvgl/qp_lvgl.c => quantum/painter/lvgl/qp_lvgl.c +4 -3
@@ 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);

Do not follow this link