From d53be633495379df577148d121a9cf52246b0c5e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 26 Jun 2024 18:08:03 +0200 Subject: Merging upstream version 0.0~git20240411.9e8c542. Signed-off-by: Daniel Baumann --- emmalloc/emmalloc.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'emmalloc/emmalloc.c') diff --git a/emmalloc/emmalloc.c b/emmalloc/emmalloc.c index c98e42e..e97ef44 100644 --- a/emmalloc/emmalloc.c +++ b/emmalloc/emmalloc.c @@ -56,6 +56,7 @@ // Defind by the linker to have the address of the start of the heap. extern unsigned char __heap_base; +extern unsigned char __heap_end; // Behavior of right shifting a signed integer is compiler implementation defined. static_assert((((int32_t)0x80000000U) >> 31) == -1, "This malloc implementation requires that right-shifting a signed integer produces a sign-extending (arithmetic) shift!"); @@ -545,9 +546,13 @@ static bool claim_more_memory(size_t numBytes) // If this is the first time we're called, see if we can use // the initial heap memory set up by wasm-ld. if (!listOfAllRegions) { - unsigned char *heap_end = sbrk(0); - if (numBytes <= (size_t)(heap_end - &__heap_base)) { - startPtr = &__heap_base; + unsigned char *heap_base = &__heap_base; + unsigned char *heap_end = &__heap_end; + if (heap_end < heap_base) { + __builtin_trap(); + } + if (numBytes <= (size_t)(heap_end - heap_base)) { + startPtr = heap_base; endPtr = heap_end; break; } -- cgit v1.2.3