From 47db66e4953969fc9e0be805ee25910fbe42f4ed Mon Sep 17 00:00:00 2001 From: liuhan Date: Thu, 8 Sep 2016 10:50:52 +0800 Subject: [PATCH] esp32: modify realloc behaves just like malloc when pass a null pointer for ptr. --- components/esp32/syscalls.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/components/esp32/syscalls.c b/components/esp32/syscalls.c index 636e32670..1aff0167a 100644 --- a/components/esp32/syscalls.c +++ b/components/esp32/syscalls.c @@ -44,10 +44,17 @@ void _free_r(struct _reent *r, void* ptr) { return vPortFree(ptr); } -// TODO: improve realloc to grow buffer in place if possible void* _realloc_r(struct _reent *r, void* ptr, size_t size) { - void* new_chunk = pvPortMalloc(size); - if (new_chunk) { + void* new_chunk; + if (size == 0) { + if (ptr) { + vPortFree(ptr); + } + return NULL; + } + + new_chunk = pvPortMalloc(size); + if (new_chunk && ptr) { memcpy(new_chunk, ptr, size); vPortFree(ptr); }