diff --git a/FreeRTOS-AWS/demos/pc/windows/common/config_files/user_settings.h b/FreeRTOS-AWS/demos/pc/windows/common/config_files/user_settings.h index 646635a..b759794 100644 --- a/FreeRTOS-AWS/demos/pc/windows/common/config_files/user_settings.h +++ b/FreeRTOS-AWS/demos/pc/windows/common/config_files/user_settings.h @@ -6,6 +6,9 @@ /* Use the FreeRTOS Heap and TCP API's */ #define FREERTOS_TCP +/* Realloc for Heap */ +#define XREALLOC pvPortRealloc + /* For Windows Simulator only */ #define FREERTOS_TCP_WINSIM diff --git a/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_4.c b/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_4.c index 02251c0..00983b6 100755 --- a/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_4.c +++ b/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_4.c @@ -308,6 +308,33 @@ BlockLink_t *pxLink; } /*-----------------------------------------------------------*/ +void *pvPortRealloc( void *pv, size_t xWantedSize ) +{ +void *pvReturn = NULL; + + if(pv) + { + BlockLink_t *pxLink = (BlockLink_t *)((char*)pv - xHeapStructSize); + if(pxLink->xBlockSize & xBlockAllocatedBit) + { + uint32_t blockSize = (pxLink->xBlockSize & ~xBlockAllocatedBit); + blockSize -= xHeapStructSize; + pvReturn = pvPortMalloc(xWantedSize); + if(pvReturn) + { + memcpy(pvReturn, pv, blockSize); + vPortFree(pv); + } + } + } + else { + pvReturn = pvPortMalloc(xWantedSize); + } + + return pvReturn; +} +/*-----------------------------------------------------------*/ + size_t xPortGetFreeHeapSize( void ) { return xFreeBytesRemaining; diff --git a/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_5.c b/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_5.c index 51c53a9..2cfb63d 100755 --- a/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_5.c +++ b/FreeRTOS-AWS/lib/FreeRTOS/portable/MemMang/heap_5.c @@ -317,6 +317,33 @@ BlockLink_t *pxLink; } /*-----------------------------------------------------------*/ +void *pvPortRealloc( void *pv, size_t xWantedSize ) +{ +void *pvReturn = NULL; + + if(pv) + { + BlockLink_t *pxLink = (BlockLink_t *)((char*)pv - xHeapStructSize); + if(pxLink->xBlockSize & xBlockAllocatedBit) + { + uint32_t blockSize = (pxLink->xBlockSize & ~xBlockAllocatedBit); + blockSize -= xHeapStructSize; + pvReturn = pvPortMalloc(xWantedSize); + if(pvReturn) + { + memcpy(pvReturn, pv, blockSize); + vPortFree(pv); + } + } + } + else { + pvReturn = pvPortMalloc(xWantedSize); + } + + return pvReturn; +} +/*-----------------------------------------------------------*/ + size_t xPortGetFreeHeapSize( void ) { return xFreeBytesRemaining; diff --git a/FreeRTOS-AWS/lib/third_party/wolfssl b/FreeRTOS-AWS/lib/third_party/wolfssl index 85b51b2..af95073 160000 --- a/FreeRTOS-AWS/lib/third_party/wolfssl +++ b/FreeRTOS-AWS/lib/third_party/wolfssl @@ -1 +1 @@ -Subproject commit 85b51b2b6e2f58b1afa5eb97ce5d03bd4ef6a16a +Subproject commit af9507391a0b2d9bebb144c80b2071f856ba9caa