summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2018-03-28 11:14:36 +0800
committerGitHub <[email protected]>2018-03-28 11:14:36 +0800
commit8ea9dd6579349624403192dac6dfe487fedf59f7 (patch)
tree56bbd992f84ef4abb458473063af9b1d219b5152
parente4ee93564ef3e1657b23937f30cbfb6b632d91ad (diff)
parentb09445cbfe1e8105b244a9e1819c2826d1be14e9 (diff)
Merge pull request #1321 from TanekLiang/memheap-fixed
[Kernel][memheap] fix rt_realloc bugs
-rw-r--r--src/memheap.c8
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);
}
}