diff options
| author | Bernard Xiong <[email protected]> | 2018-03-28 11:14:36 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-03-28 11:14:36 +0800 |
| commit | 8ea9dd6579349624403192dac6dfe487fedf59f7 (patch) | |
| tree | 56bbd992f84ef4abb458473063af9b1d219b5152 | |
| parent | e4ee93564ef3e1657b23937f30cbfb6b632d91ad (diff) | |
| parent | b09445cbfe1e8105b244a9e1819c2826d1be14e9 (diff) | |
Merge pull request #1321 from TanekLiang/memheap-fixed
[Kernel][memheap] fix rt_realloc bugs
| -rw-r--r-- | src/memheap.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/memheap.c b/src/memheap.c index dcd9114620..7317ebdbab 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -659,6 +659,12 @@ void *rt_realloc(void *rmem, rt_size_t newsize) if (rmem == RT_NULL) return rt_malloc(newsize); + if (newsize == 0) + { + rt_free(rmem); + return RT_NULL; + } + /* get old memory item */ header_ptr = (struct rt_memheap_item *) ((rt_uint8_t *)rmem - RT_MEMHEAP_SIZE); @@ -678,6 +684,8 @@ void *rt_realloc(void *rmem, rt_size_t newsize) rt_memcpy(new_ptr, rmem, oldsize); else rt_memcpy(new_ptr, rmem, newsize); + + rt_free(rmem); } } |
