]> sourceware.org Git - newlib-cygwin.git/commit
Used chunk needs to be removed from free_list
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Tue, 30 Aug 2022 13:56:25 +0000 (15:56 +0200)
committerJeff Johnston <jjohnstn@redhat.com>
Thu, 1 Sep 2022 18:40:27 +0000 (14:40 -0400)
commit0455ea28ce2bfa83ca36ec37b9c9fb00c54bbe54
tree17ebfd8701c677db132ffe612a3b1b7b8201385d
parentd92d3a3c4a7af1ebe56d58c32986ab410f6071ec
Used chunk needs to be removed from free_list

When using nano malloc and the remaning heap space is not big enough to
fullfill the allocation, malloc will attempt to merge the last chunk in
the free list with a new allocation in order to create a bigger chunk.
This is successful, but the chunk still remains in the free_list, so
any later call to malloc can give out the same region without it first
being freed.

Possible sequence to verify:

void *p1 = malloc(3000);
void *p2 = malloc(4000);
void *p3 = malloc(5000);
void *p4 = malloc(6000);
void *p5 = malloc(7000);
free(p2);
free(p4);
void *p6 = malloc(35000);
free(p6);
void *p7 = malloc(42000);
void *p8 = malloc(32000);

Without the change, p7 and p8 points to the same address.
Requirement, after malloc(35000), there is less than 42000 bytes
available on the heap.

Contributed by STMicroelectronics

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
newlib/libc/stdlib/nano-mallocr.c
This page took 0.028482 seconds and 5 git commands to generate.