+ rfd=info->free_list;
+ if (rfd) {
+ info->free_list=rfd->next;
+ heap_clear(rfd->h);
+ assert(rfd->items);
+ /* all other pointers shouls already be allocated, in right sizes! */
+ }
+ else {
+ rfd = (struct rset_multior_rfd *) nmem_malloc (ct->nmem,sizeof(*rfd));
+ rfd->h = heap_create( ct->nmem, info->no_rsets,
+ info->key_size, info->cmp);
+ rfd->items=(struct heap_item *) nmem_malloc(ct->nmem,
+ info->no_rsets*sizeof(*rfd->items));
+ for (i=0; i<info->no_rsets; i++){
+ rfd->items[i].rset=info->rsets[i];
+ rfd->items[i].buf=nmem_malloc(ct->nmem,info->key_size);
+ }
+ }