[newlib-cygwin] Don't allocate another header when merging chunks

Jeff Johnston jjohnstn@sourceware.org
Thu Sep 1 19:39:21 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a68e99f8839e4697790077c8a77b506d528cc674

commit a68e99f8839e4697790077c8a77b506d528cc674
Author: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Date:   Tue Aug 30 15:56:26 2022 +0200

    Don't allocate another header when merging chunks
    
    In the nano version of malloc, when the last chunk is to be extended,
    there is no need to acount for the header again as it's already taken
    into account in the overall "alloc_size" at the beginning of the
    function.
    
    Contributed by STMicroelectronics
    
    Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>

Diff:
---
 newlib/libc/stdlib/nano-mallocr.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/newlib/libc/stdlib/nano-mallocr.c b/newlib/libc/stdlib/nano-mallocr.c
index 43eb20e07..b2273ba60 100644
--- a/newlib/libc/stdlib/nano-mallocr.c
+++ b/newlib/libc/stdlib/nano-mallocr.c
@@ -328,10 +328,6 @@ void * nano_malloc(RARG malloc_size_t s)
                /* The last free item has the heap end as neighbour.
                 * Let's ask for a smaller amount and merge */
                alloc_size -= p->size;
-               alloc_size = ALIGN_SIZE(alloc_size, CHUNK_ALIGN); /* size of aligned data load */
-               alloc_size += MALLOC_PADDING; /* padding */
-               alloc_size += CHUNK_OFFSET; /* size of chunk head */
-               alloc_size = MAX(alloc_size, MALLOC_MINCHUNK);
 
                if (sbrk_aligned(RCALL alloc_size) != (void *)-1)
                {


More information about the Newlib-cvs mailing list