- ptinfo = (struct rset_pp_info *) xmalloc (sizeof(*ptinfo));
- ptinfo->next = info->ispt_list;
- info->ispt_list = ptinfo;
- ptinfo->pt = isc_pp_open (info->is, info->pos);
- ptinfo->info = info;
- if (ct->rset_terms[0]->nn < 0)
- ct->rset_terms[0]->nn = isc_pp_num (ptinfo->pt);
- ct->rset_terms[0]->count = 0;
- ptinfo->countp = &ct->rset_terms[0]->count;
- ptinfo->buf = xmalloc (info->key_size);
- return ptinfo;
+ rfd = rfd_create_base(ct);
+ if (rfd->priv)
+ ptinfo = (struct rset_pp_info *)rfd->priv;
+ else {
+ ptinfo = (struct rset_pp_info *) nmem_malloc (ct->nmem,sizeof(*ptinfo));
+ rfd->priv = ptinfo;
+ ptinfo->buf = nmem_malloc (ct->nmem,ct->keycontrol->key_size);
+ }
+ ptinfo->pt = isamc_pp_open(info->is, info->pos);
+ return rfd;