forked from starnakin/IronGOLEM
add: galloc: free: check if the ptr is valid
This commit is contained in:
parent
c688cfc4b1
commit
1d9de5df65
@ -144,6 +144,11 @@ free(ptr)
|
||||
local first_block;
|
||||
local last_block;
|
||||
|
||||
if (ptr > heap + HEAP_SIZE | heap > ptr)
|
||||
{
|
||||
putstr("Error: free: invalid ptr\n");
|
||||
return;
|
||||
}
|
||||
block = ptr - LOCATION_DATA;
|
||||
prev_block = [block + LOCATION_PREV];
|
||||
if (prev_block == 0 | [prev_block + LOCATION_USED])
|
||||
@ -160,5 +165,5 @@ free(ptr)
|
||||
|
||||
leaks()
|
||||
{
|
||||
return (heap + LOCATION_NEXT != NULL);
|
||||
return ([heap + LOCATION_NEXT] != 0);
|
||||
}
|
||||
|
@ -16,7 +16,9 @@ main()
|
||||
|
||||
ptr2 = galloc(0x9000);
|
||||
test_num(ptr2, 0, "alloc too big");
|
||||
free(ptr2);
|
||||
|
||||
test_num(leaks(), 0, "leaks");
|
||||
ptr1 = galloc(1);
|
||||
test_num(leaks(), 1, "leaks");
|
||||
free(ptr1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user