- rfd = (struct rset_between_rfd *) nmem_malloc(ct->nmem, (sizeof(*rfd)));
- rfd->next = info->rfd_list;
- info->rfd_list = rfd;
- rfd->info = info;
-
- rfd->buf_l = nmem_malloc(ct->nmem, (info->key_size));
- rfd->buf_m = nmem_malloc(ct->nmem, (info->key_size));
- rfd->buf_r = nmem_malloc(ct->nmem, (info->key_size));
- rfd->buf_attr = nmem_malloc(ct->nmem, (info->key_size));
-
- rfd->rfd_l = rset_open (info->rset_l, RSETF_READ);
- rfd->rfd_m = rset_open (info->rset_m, RSETF_READ);
- rfd->rfd_r = rset_open (info->rset_r, RSETF_READ);
+ rfd=rfd_create_base(ct);
+ if (rfd->priv)
+ p=(struct rset_between_rfd *)rfd->priv;
+ else {
+ p = (struct rset_between_rfd *) nmem_malloc(ct->nmem, (sizeof(*p)));
+ rfd->priv=p;
+ p->buf_l = nmem_malloc(ct->nmem, (ct->keycontrol->key_size));
+ p->buf_m = nmem_malloc(ct->nmem, (ct->keycontrol->key_size));
+ p->buf_r = nmem_malloc(ct->nmem, (ct->keycontrol->key_size));
+ p->buf_attr = nmem_malloc(ct->nmem, (ct->keycontrol->key_size));
+ }
+
+ p->rfd_l = rset_open (info->rset_l, RSETF_READ);
+ p->rfd_m = rset_open (info->rset_m, RSETF_READ);
+ p->rfd_r = rset_open (info->rset_r, RSETF_READ);