From 2f85ce02f1816ea299e2366d2064aac5bef51c84 Mon Sep 17 00:00:00 2001 From: Kareem Date: Wed, 19 Jul 2023 15:26:48 -0700 Subject: [PATCH] Update example pvPortRealloc example. --- .../FreeRTOS/Source/portable/MemMang/heap_4.c | 23 +++++++++---------- .../FreeRTOS/Source/portable/MemMang/heap_5.c | 23 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_4.c b/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_4.c index f2ebcd6..106cdab 100755 --- a/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_4.c +++ b/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_4.c @@ -310,21 +310,20 @@ BlockLink_t *pxLink; void *pvPortRealloc( void *pv, size_t xWantedSize ) { -void *pvReturn = NULL; + void *pvReturn = NULL; - if(pv) + if (xWantedSize == 0) { - BlockLink_t *pxLink = (BlockLink_t *)((char*)pv - xHeapStructSize); - if(pxLink->xBlockSize & xBlockAllocatedBit) + if (pv) + vPortFree(pv); + } + else if (pv) + { + pvReturn = pvPortMalloc(xWantedSize); + if(pvReturn) { - uint32_t blockSize = (pxLink->xBlockSize & ~xBlockAllocatedBit); - blockSize -= xHeapStructSize; - pvReturn = pvPortMalloc(xWantedSize); - if(pvReturn) - { - memcpy(pvReturn, pv, blockSize); - vPortFree(pv); - } + memcpy(pvReturn, pv, xWantedSize); + vPortFree(pv); } } else { diff --git a/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_5.c b/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_5.c index be4c315..c6cba55 100755 --- a/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_5.c +++ b/FreeRTOS-Classic/FreeRTOS/Source/portable/MemMang/heap_5.c @@ -319,21 +319,20 @@ BlockLink_t *pxLink; void *pvPortRealloc( void *pv, size_t xWantedSize ) { -void *pvReturn = NULL; + void *pvReturn = NULL; - if(pv) + if (xWantedSize == 0) { - BlockLink_t *pxLink = (BlockLink_t *)((char*)pv - uxHeapStructSize); - if(pxLink->xBlockSize & xBlockAllocatedBit) + if (pv) + vPortFree(pv); + } + else if (pv) + { + pvReturn = pvPortMalloc(xWantedSize); + if(pvReturn) { - uint32_t blockSize = (pxLink->xBlockSize & ~xBlockAllocatedBit); - blockSize -= uxHeapStructSize; - pvReturn = pvPortMalloc(xWantedSize); - if(pvReturn) - { - memcpy(pvReturn, pv, blockSize); - vPortFree(pv); - } + memcpy(pvReturn, pv, xWantedSize); + vPortFree(pv); } } else {