From d01bbaecc1063fa98af5737cb4aeba5b20f2d454 Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Mon, 13 Nov 2023 15:35:47 +0800 Subject: [PATCH] sim/heap: malloc returns a valid pointer when allocating 0 bytes. The default heap management in nuttx returns a valid memory address when malloc(0). In sim_heap, malloc(0) returns NULL, aligning the behavior of sim_heap with mm_heap The man manual describes malloc as follows: https://man7.org/linux/man-pages/man3/malloc.3.html The malloc() function allocates size bytes and returns a pointer to the allocated memory. The memory is not initialized. If size is 0, then malloc() returns a unique pointer value that can later be successfully passed to free(). (See "Nonportable behavior" for portability issues.) Signed-off-by: yinshengkai --- arch/sim/src/sim/sim_heap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index e95b559ff1..7b95441f7a 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -375,8 +375,7 @@ void *mm_realloc(struct mm_heap_s *heap, void *oldmem, if (size == 0) { - mm_free(heap, oldmem); - return NULL; + size = 1; } oldsize = host_mallocsize(oldmem);