diff --git a/src/load.c b/src/load.c index 17857bc7..f83635e9 100644 --- a/src/load.c +++ b/src/load.c @@ -329,7 +329,7 @@ void init_comp(B* new_re, B* prev_re, B prim, B sys) { B prevN = prev_re[re_sysNames]; B prevV = prev_re[re_sysVals]; B idxs = C2(indexOf, incG(prevN), inhNs); - B inhNIs = C1(slash, incG(inhA)); + B inhNIs = C1(slash, inhA); SGetU(idxs) SGet(prevV) SGetU(inhNIs) for (usz i = 0; i < inhN; i++) { usz oi = o2sG(GetU(inhNIs,i)); @@ -338,7 +338,10 @@ void init_comp(B* new_re, B* prev_re, B prim, B sys) { HARR_O(nvs).a[oi] = Get(prevV, idx); } decG(inhNIs); decG(idxs); - } else decG(inhNs); + } else { + decG(inhNs); + decG(inhA); + } new_re[re_sysNames] = nnsA; new_re[re_sysVals] = HARR_FV(nvs); diff --git a/test/cases/system.bqn b/test/cases/system.bqn index 86b7a21c..85eece1f 100644 --- a/test/cases/system.bqn +++ b/test/cases/system.bqn @@ -37,7 +37,7 @@ ps ← ⟨'÷'‿÷⟩ ⋄ f←•ReBQN {repl⇐"loose" ⋄ primitives⇐ps} ⋄ f←•ReBQN{primitives⇐⋈'÷'‿- ⋄ system⇐⟨"foo"‿⋈, "oldbqn"‿•BQN, "bqn"⟩} ⋄ {𝕏 "÷5"}¨ F "⟨•foo, •OldBQN, •BQN⟩" %% ⟨⋈"÷5", 0.2, ¯5⟩ !"•ReBQN: No system value ""baz"" to inherit" % •ReBQN{system⇐⟨"foo"‿"bar", "bqn", "baz", "rebqn"⟩} !"•ReBQN: No system value ""bqn"" to inherit" % f←•ReBQN{system⇐⟨"baz"‿1, "rebqn", "foo"‿2⟩} ⋄ g←F"•ReBQN" ⋄ G {system⇐⟨"foo"‿"bar", "baz", "bqn", "rebqn"⟩} -f←•ReBQN{primitives⇐⋈'÷'‿- ⋄ system⇐⟨"foo"‿⋈, "bqn", "listsys"⟩} ⋄ F"•listsys" %% ⟨"foo","bqn","listsys"⟩ +f←•ReBQN{primitives⇐⋈'÷'‿- ⋄ system⇐⟨"primitives", "foo"‿⋈, "bqn", "listsys"⟩} ⋄ F"•primitives‿•listsys" %% ⟨⟨'÷'‿-⟩ ⋄ ⟨"primitives","foo","bqn","listsys"⟩⟩ # •primitives