X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/43f490c377cb05d1ac6e7d2c27a06ae940e2c047..a077a9a931a4b81abf0f549d7f463ae75075149a:/test/tvec-remote.c diff --git a/test/tvec-remote.c b/test/tvec-remote.c index 637f851..7fbd1b6 100644 --- a/test/tvec-remote.c +++ b/test/tvec-remote.c @@ -667,7 +667,7 @@ int tvec_remoteserver(int infd, int outfd, const struct tvec_config *config) if (env && env->setup == tvec_remotesetup) env = ((struct tvec_remoteenv *)env)->r.env; if (!env || !env->ctxsz) ctx = 0; - else ctx = x_alloc(srvtv.a, env->ctxsz); + else ctx = pool_alloc(srvtv.p_group, env->ctxsz); if (env && env->setup) env->setup(&srvtv, env, 0, ctx); /* Initialize the registers. */ @@ -803,7 +803,7 @@ int tvec_remoteserver(int infd, int outfd, const struct tvec_config *config) /* Tear down the environment and release other resources. */ if (env && env->teardown) env->teardown(&srvtv, ctx); tvec_releaseregs(&srvtv); - x_free(srvtv.a, ctx); srvtv.test = 0; env = 0; ctx = 0; + srvtv.test = 0; env = 0; ctx = 0; pool_recycle(srvtv.p_group); /* Report completion. */ QUEUEPK(&srvtv, &srvrc, QF_FORCE, TVPK_EGROUP | TVPF_ACK); @@ -821,7 +821,7 @@ end: /* Clean up and return. */ if (env && env->teardown) env->teardown(&srvtv, ctx); if (vd) vd->def.ty->release(&r->v, &vd->def); - x_free(srvtv.a, ctx); x_free(srvtv.a, r_alloc); + x_free(srvtv.a, r_alloc); dstr_destroy(&d); if (srvtv.test) tvec_releaseregs(&srvtv); release_comms(&srvtv, &srvrc); tvec_end(&srvtv); return (rc ? 2 : 0); @@ -1932,16 +1932,17 @@ void tvec_remotesetup(struct tvec_state *tv, const struct tvec_env *env, const struct tvec_remoteenv *re = (const struct tvec_remoteenv *)env; const struct tvec_env *subenv = re->r.env; - r->tv = tv; + r->tv = tv; r->subctx = 0; init_comms(&r->rc); r->re = re; r->kid = -1; DCREATE(&r->prgwant); DCREATE(&r->progress); if (connect_remote(tv, r)) tvec_skipgroup(tv, "failed to connect to test backend"); reset_vars(r); - if (subenv && subenv->ctxsz) r->subctx = x_alloc(tv->a, subenv->ctxsz); - else r->subctx = 0; - if (subenv && subenv->setup) subenv->setup(tv, subenv, r, r->subctx); + if (subenv && subenv->ctxsz) + r->subctx = pool_alloc(tv->p_group, subenv->ctxsz); + if (subenv && subenv->setup) + subenv->setup(tv, subenv, r, r->subctx); } /* --- @tvec_remotefindvar@, @setvar_local@, @setvar_remote@ --- * @@ -2212,7 +2213,6 @@ void tvec_remoteteardown(struct tvec_state *tv, void *ctx) buf b; if (subenv && subenv->teardown) subenv->teardown(tv, r->subctx); - x_free(tv->a, r->subctx); if (r->rc.outfd >= 0) { QUEUEPK(tv, &r->rc, QF_FORCE, TVPK_EGROUP); if (!handle_packets(tv, r, RCVF_ALLOWEOF, TVPK_EGROUP | TVPF_ACK, &b))