|
@@ -616,7 +616,10 @@ void *rt_malloc(rt_size_t size)
|
|
|
/* allocate a zone from page */
|
|
|
z = rt_page_alloc(zone_size / RT_MM_PAGE_SIZE);
|
|
|
if (z == RT_NULL)
|
|
|
- goto fail;
|
|
|
+ {
|
|
|
+ chunk = RT_NULL;
|
|
|
+ goto __exit;
|
|
|
+ }
|
|
|
|
|
|
/* lock heap */
|
|
|
rt_sem_take(&heap_sem, RT_WAITING_FOREVER);
|
|
@@ -672,15 +675,10 @@ void *rt_malloc(rt_size_t size)
|
|
|
|
|
|
done:
|
|
|
rt_sem_release(&heap_sem);
|
|
|
-
|
|
|
RT_OBJECT_HOOK_CALL(rt_malloc_hook, ((char *)chunk, size));
|
|
|
|
|
|
+__exit:
|
|
|
return chunk;
|
|
|
-
|
|
|
-fail:
|
|
|
- rt_sem_release(&heap_sem);
|
|
|
-
|
|
|
- return RT_NULL;
|
|
|
}
|
|
|
RTM_EXPORT(rt_malloc);
|
|
|
|