From 54fa0dc28be433cb0a8c241b76b9e15290ec3846 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 28 Oct 2020 14:50:42 +0100 Subject: [PATCH] fix lv_mem_free --- src/lv_misc/lv_mem.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/lv_misc/lv_mem.c b/src/lv_misc/lv_mem.c index 05307f3cc..6c5817bc5 100644 --- a/src/lv_misc/lv_mem.c +++ b/src/lv_misc/lv_mem.c @@ -172,11 +172,27 @@ void * lv_mem_alloc(size_t size) #if LV_MEM_CUSTOM == 0 + lv_mem_monitor_t mon; + lv_mem_monitor(&mon); alloc = alloc_core(size); + printf("used: %6d (%3d %%), frag: %3d %%, biggest free: %6d\n", + (int)mon.total_size - mon.free_size, mon.used_pct, mon.frag_pct, + (int)mon.free_biggest_size); + lv_mem_defrag(); if(alloc == NULL) { LV_LOG_WARN("Perform defrag"); + + lv_mem_monitor(&mon); + printf("used: %6d (%3d %%), frag: %3d %%, biggest free: %6d\n", + (int)mon.total_size - mon.free_size, mon.used_pct, mon.frag_pct, + (int)mon.free_biggest_size); lv_mem_defrag(); + + lv_mem_monitor(&mon); + printf("used: %6d (%3d %%), frag: %3d %%, biggest free: %6d\n", + (int)mon.total_size - mon.free_size, mon.used_pct, mon.frag_pct, + (int)mon.free_biggest_size); alloc = alloc_core(size); } @@ -230,13 +246,18 @@ void lv_mem_free(const void * data) _lv_memset((void *)data, 0xbb, _lv_mem_get_size(data)); #endif -/*Use custom, user defined free function*/ -#if LV_MEM_CUSTOM #if LV_ENABLE_GC == 0 /*e points to the header*/ lv_mem_ent_t * e = (lv_mem_ent_t *)((uint8_t *)data - sizeof(lv_mem_header_t)); +#endif + +/*Use custom, user defined free function*/ +#if LV_MEM_CUSTOM == 0 e->header.s.used = 0; +#else +#if LV_ENABLE_GC == 0 + /*e points to the header*/ LV_MEM_CUSTOM_FREE(e); #else LV_MEM_CUSTOM_FREE((void *)data);