From dde24fa64103e7a921c80a7782f1e625e39e2e86 Mon Sep 17 00:00:00 2001 From: Moon Flower Date: Mon, 10 Mar 2025 10:26:23 +0330 Subject: Add sbrk fallback --- moonshine.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'moonshine.h') diff --git a/moonshine.h b/moonshine.h index 1eddf5f..6578dc9 100644 --- a/moonshine.h +++ b/moonshine.h @@ -1191,6 +1191,10 @@ sbrk_block *sbrkocator_find_free(u8 size) { var sbrkocator_alloc_new(u8 size) { sbrk_block *new_block = sbrk(size + sizeof(sbrk_block)); + + // Out of sbrk memory. + if(current_break < (var)new_block + size) return NULL; + if (new_block == (sbrk_block *) -1) return NULL; new_block->magic = sbrk_magic_number; new_block->ptr = (void *) (new_block + 1); @@ -1294,7 +1298,9 @@ const u8 MOONSHINE_ALLOCATOR_SWITCH_THRESHOLD = 1024 * 16; var alloc(u8 size) { if (size > MOONSHINE_ALLOCATOR_SWITCH_THRESHOLD) return mmapocator_alloc(size); - return sbrkocator_alloc(size); + var sbrk_ptr = sbrkocator_alloc(size); + if(sbrk_ptr == NULL) return mmapocator_alloc(size); + return sbrk_ptr; } void release(var ptr) { -- cgit v1.2.3