Fix memory leak in realloc failure handling (#22188)
This commit is contained in:
		
							parent
							
								
									d6b16b0df0
								
							
						
					
					
						commit
						3df155f203
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue