1057
1057
} /* read_to_buffer */
1061
Put all room used by freed buffer to use in adjacent buffer.
1063
Note, that we can't simply distribute memory evenly between all buffers,
1064
because new areas must not overlap with old ones.
1066
@param[in] queue list of non-empty buffers, without freed buffer
1067
@param[in] reuse empty buffer
1068
@param[in] key_length key length
1071
void reuse_freed_buff(QUEUE *queue, BUFFPEK *reuse, uint32_t key_length)
1073
unsigned char *reuse_end= reuse->base + reuse->max_keys * key_length;
1074
for (uint32_t i= 0; i < queue->elements; ++i)
1076
BUFFPEK *bp= (BUFFPEK *) queue_element(queue, i);
1077
if (bp->base + bp->max_keys * key_length == reuse->base)
1079
bp->max_keys+= reuse->max_keys;
1082
else if (bp->base == reuse_end)
1084
bp->base= reuse->base;
1085
bp->max_keys+= reuse->max_keys;
1092
1060
class compare_functor
1094
1062
qsort2_cmp key_compare;