diff --git a/src/mem.c b/src/mem.c index 22921253eabe4bb956179581a0a5657bb669e312..5bfc7b7d047d1ab8b432b0af4b4b19d074cfa3b1 100644 --- a/src/mem.c +++ b/src/mem.c @@ -13,6 +13,7 @@ * 2010-06-09 Bernard fix the end stub of heap * fix memory check in rt_realloc function * 2010-07-13 Bernard fix RT_ALIGN issue found by kuronca + * 2010-10-14 Bernard fix rt_realloc issue when realloc a NULL pointer. */ /* @@ -367,6 +368,10 @@ void *rt_realloc(void *rmem, rt_size_t newsize) return RT_NULL; } + /* allocate a new memory block */ + if (rmem == RT_NULL) + return rt_malloc(newsize); + rt_sem_take(&heap_sem, RT_WAITING_FOREVER); if ((rt_uint8_t *)rmem < (rt_uint8_t *)heap_ptr ||