From e5471e8f870d15d90046cb0304267fc0812c691e Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 30 Jun 2021 23:16:08 +0300 Subject: [PATCH] fix reference counts for comp->path --- src/load.c | 4 ++-- src/vm.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/load.c b/src/load.c index fe626409..8971fec7 100644 --- a/src/load.c +++ b/src/load.c @@ -64,8 +64,8 @@ Block* load_compObj(B x, B src, B path, Scope* sc) { // consumes x,src BS2B xget = TI(x).get; usz xia = a(x)->ia; if (xia!=5 & xia!=3) thrM("load_compObj: bad item count"); - Block* r = xia==5? compile(xget(x,0),xget(x,1),xget(x,2),xget(x,3),xget(x,4), src, path, sc) - : compile(xget(x,0),xget(x,1),xget(x,2),bi_N, bi_N, src, path, sc); + Block* r = xia==5? compile(xget(x,0),xget(x,1),xget(x,2),xget(x,3),xget(x,4), src, inc(path), sc) + : compile(xget(x,0),xget(x,1),xget(x,2),bi_N, bi_N, src, inc(path), sc); dec(x); return r; } diff --git a/src/vm.c b/src/vm.c index 24c8eccb..293d107e 100644 --- a/src/vm.c +++ b/src/vm.c @@ -691,7 +691,7 @@ void body_free(Value* x) { ptr_decR(RFLD(c->bc, I32Arr,a)); ptr_decR(RFLD(c->map,I32Arr,a)); } -void comp_free(Value* x) { Comp* c = (Comp *)x; ptr_decR(c->objs); decR(c->bc); decR(c->src); decR(c->indices); } +void comp_free(Value* x) { Comp* c = (Comp *)x; ptr_decR(c->objs); decR(c->bc); decR(c->src); decR(c->indices); decR(c->path); } void block_free(Value* x) { Block* c = (Block *)x; ptr_decR(c->body); } void funBl_free(Value* x) { FunBlock* c = (FunBlock*)x; ptr_decR(c->sc); ptr_decR(c->bl); } void md1Bl_free(Value* x) { Md1Block* c = (Md1Block*)x; ptr_decR(c->sc); ptr_decR(c->bl); } @@ -719,7 +719,7 @@ void body_visit(Value* x) { mm_visitP(RFLD(c->bc, I32Arr,a)); mm_visitP(RFLD(c->map,I32Arr,a)); } -void comp_visit(Value* x) { Comp* c = (Comp *)x; mm_visitP(c->objs); mm_visit(c->bc); mm_visit(c->src); mm_visit(c->indices); } +void comp_visit(Value* x) { Comp* c = (Comp *)x; mm_visitP(c->objs); mm_visit(c->bc); mm_visit(c->src); mm_visit(c->indices); mm_visit(c->path); } void block_visit(Value* x) { Block* c = (Block *)x; mm_visitP(c->body); } void funBl_visit(Value* x) { FunBlock* c = (FunBlock*)x; mm_visitP(c->sc); mm_visitP(c->bl); } void md1Bl_visit(Value* x) { Md1Block* c = (Md1Block*)x; mm_visitP(c->sc); mm_visitP(c->bl); }