forked from starnakin/IronGOLEM
add: realloc and remove reallocarray
This commit is contained in:
@ -1,21 +1,26 @@
|
||||
reallocarray(ptr, nmemb, size)
|
||||
realloc(ptr, new_size)
|
||||
{
|
||||
local tmp;
|
||||
local start;
|
||||
local block_ptr;
|
||||
local new_space;
|
||||
local i;
|
||||
|
||||
start = ptr;
|
||||
tmp = galloc(size);
|
||||
if (tmp == NULL)
|
||||
return NULL;
|
||||
new_space = galloc(new_size);
|
||||
if (new_space == NULL)
|
||||
{
|
||||
free(ptr);
|
||||
return (NULL);
|
||||
}
|
||||
if (ptr == NULL)
|
||||
return tmp;
|
||||
return new_space;
|
||||
block_ptr = ptr - LOCATION_DATA;
|
||||
i = 0;
|
||||
loop
|
||||
{
|
||||
if (start - ptr == nmemb)
|
||||
if (i == new_size | i == [block_ptr + LOCATION_SIZE])
|
||||
break;
|
||||
[tmp + start - ptr] = [start];
|
||||
start++;
|
||||
[new_space + i] = [ptr + i];
|
||||
i++;
|
||||
}
|
||||
free(ptr);
|
||||
return tmp;
|
||||
return new_space;
|
||||
}
|
||||
|
Reference in New Issue
Block a user