Merge pull request #1321 from TanekLiang/memheap-fixed
[Kernel][memheap] fix rt_realloc bugs
This commit is contained in:
commit
8ea9dd6579
@ -659,6 +659,12 @@ void *rt_realloc(void *rmem, rt_size_t newsize)
|
|||||||
if (rmem == RT_NULL)
|
if (rmem == RT_NULL)
|
||||||
return rt_malloc(newsize);
|
return rt_malloc(newsize);
|
||||||
|
|
||||||
|
if (newsize == 0)
|
||||||
|
{
|
||||||
|
rt_free(rmem);
|
||||||
|
return RT_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* get old memory item */
|
/* get old memory item */
|
||||||
header_ptr = (struct rt_memheap_item *)
|
header_ptr = (struct rt_memheap_item *)
|
||||||
((rt_uint8_t *)rmem - RT_MEMHEAP_SIZE);
|
((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);
|
rt_memcpy(new_ptr, rmem, oldsize);
|
||||||
else
|
else
|
||||||
rt_memcpy(new_ptr, rmem, newsize);
|
rt_memcpy(new_ptr, rmem, newsize);
|
||||||
|
|
||||||
|
rt_free(rmem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user