fix: free get the right size

This commit is contained in:
starnakin 2023-06-18 15:07:11 +02:00
parent 496b92aed9
commit 8966db1c22

View File

@ -128,9 +128,12 @@ merge_blocks(first_block, last_block)
{
local size;
size = last_block - first_block - HEADER_SIZE - PADDING_SIZE * 2;
if (last_block == first_block)
{
setup_header(first_block, 0, [first_block + LOCATION_SIZE], [first_block + LOCATION_NEXT], [first_block + LOCATION_PREV]);
}
size = last_block - first_block + [last_block + LOCATION_SIZE];
setup_header(first_block, 0, size, [last_block + LOCATION_NEXT], [first_block + LOCATION_PREV]);
return (first_block);
}
free(ptr)
@ -143,12 +146,12 @@ free(ptr)
block = ptr - LOCATION_DATA;
prev_block = [block + LOCATION_PREV];
if ([prev_block + LOCATION_USED])
if (prev_block == 0 | [prev_block + LOCATION_USED])
first_block = block;
else
first_block = prev_block;
next_block = [block + LOCATION_NEXT];
if ([next_block + LOCATION_USED])
if (next_block == 0 | [next_block + LOCATION_USED])
last_block = block;
else
last_block = next_block;