diff --git a/components/freertos/heap_regions_debug.c b/components/freertos/heap_regions_debug.c index 5cb8f5f9c..21011d581 100644 --- a/components/freertos/heap_regions_debug.c +++ b/components/freertos/heap_regions_debug.c @@ -86,6 +86,7 @@ size_t mem_debug_malloc_dump(int task, mem_dump_block_t* buffer, size_t size) *(int*)buffer->task = btask; buffer->address = (void*)b; buffer->size = b->size; + buffer->xtag = b->xtag; ++buffer; --remaining; b = b->next; @@ -132,8 +133,9 @@ void mem_init_dog(void *data) #if (INCLUDE_pcTaskGetTaskName == 1) task = xTaskGetCurrentTaskHandle(); if (task){ - strncpy(b->head.task, pcTaskGetTaskName(task), 3); - b->head.task[3] = '\0'; + int name = 0; + strncpy((char*)&name, pcTaskGetTaskName(task), 3); + *(int*)b->head.task = name; } else { *(int*)b->head.task = 0; diff --git a/components/freertos/include/freertos/heap_regions_debug.h b/components/freertos/include/freertos/heap_regions_debug.h index 064beeadd..5a1a220d3 100644 --- a/components/freertos/include/freertos/heap_regions_debug.h +++ b/components/freertos/include/freertos/heap_regions_debug.h @@ -78,7 +78,9 @@ extern void mem_malloc_set_abort(int task, int size, int count); typedef struct { char task[4]; void* address; - int size; + int size: 24; /*<< The size of the free block. */ + int xtag: 7; /*<< Tag of this region */ + int xAllocated: 1; /*<< 1 if allocated */ } mem_dump_block_t; extern size_t mem_debug_malloc_dump(int task, mem_dump_block_t* buffer, size_t size);