+ /* Look for entries in free array. */
+ freelen = find_free_end(pool, arrsize);
+ for (fa_off = 0; fa_off < freelen; fa_off += fa_hdrlen) {
+ fa_hdrlen = decode(&off, &free, arr + fa_off);
+ off -= MIN_BLOCK_SIZE;
+ hdrlen = decode(&len, &free, arr + off);
+ if (long_enough(off, len, size, align)) {
+ /* Move every successive entry down. */
+ memmove(arr + fa_off, arr + fa_off + fa_hdrlen,
+ freelen - fa_hdrlen);
+ memset(arr + freelen - fa_hdrlen, 0, fa_hdrlen);
+ goto found;
+ }
+ }