From 2dbbb3415e9bcc80169d58188951ad37d39bb6bd Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 3 Jun 2022 19:50:26 +0300 Subject: [PATCH] fix m_nsDesc failing to allocate leaving body->nsDesc uninitialized --- src/vm.c | 4 ++-- src/vm.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vm.c b/src/vm.c index 5fa1c7fe..765637d7 100644 --- a/src/vm.c +++ b/src/vm.c @@ -108,7 +108,7 @@ B listVars(Scope* sc) { } -Body* m_body(i32 vam, i32 pos, u32 maxStack, u16 maxPSC) { // leaves varIDs and nsDesc uninitialized +Body* m_body(i32 vam, i32 pos, u32 maxStack, u16 maxPSC) { Body* body = mm_alloc(fsizeof(Body, varData, i32, vam*2), t_body); #if JIT_START != -1 @@ -124,6 +124,7 @@ Body* m_body(i32 vam, i32 pos, u32 maxStack, u16 maxPSC) { // leaves varIDs and body->maxPSC = maxPSC; body->bl = NULL; body->varAm = (u16)vam; + body->nsDesc = NULL; return body; } @@ -363,7 +364,6 @@ Block* compileBlock(B block, Comp* comp, bool* bDone, u32* bc, usz bcIA, B allBl if (boIA>2) { m_nsDesc(body, imm, ty, finalVam, nameList, GetU(bodyRepr,2), GetU(bodyRepr,3)); } else { - body->nsDesc = NULL; for (u64 i = 0; i < vam*2; i++) body->varData[i] = -1; } diff --git a/src/vm.h b/src/vm.h index 1f84d51f..363473a8 100644 --- a/src/vm.h +++ b/src/vm.h @@ -150,7 +150,7 @@ Block* bqn_comp(B str, B path, B args); // consumes all Block* bqn_compSc(B str, B path, B args, Scope* sc, bool repl); // consumes str,path,args Block* compile(B bcq, B objs, B blocks, B bodies, B indices, B tokenInfo, B src, B path, Scope* sc); Scope* m_scope(Body* body, Scope* psc, u16 varAm, i32 initVarAm, B* initVars); -Body* m_body(i32 vam, i32 pos, u32 maxStack, u16 maxPSC); // leaves varIDs and nsDesc uninitialized +Body* m_body(i32 vam, i32 pos, u32 maxStack, u16 maxPSC); // leaves varData uninitialized void init_comp(B* set, B prim); // doesn't consume; writes into first 3 elements of set B rebqn_exec(B str, B path, B args, B o); // consumes str,path,args B listVars(Scope* sc); // doesn't consume; returns bi_N if not accessable