static unsigned long find_free_end(unsigned char *arr, unsigned long arrsize)
{
- unsigned long end;
+ long i;
- for (end = 0; end < arrsize; end++) {
- if (!arr[end])
- break;
+ for (i = arrsize-1; i >= 0; i--) {
+ if (arr[i])
+ return i + 1;
}
- return end;
+ return 0;
}
void *tiny_alloc_get(void *pool, unsigned long poolsize,
if (long_enough(off, len, size, align)) {
/* Move every successive entry down. */
memmove(arr + fa_off, arr + fa_off + fa_hdrlen,
- freelen - fa_hdrlen);
+ freelen - (fa_off + fa_hdrlen));
memset(arr + freelen - fa_hdrlen, 0, fa_hdrlen);
goto found;
}