fix refcount errors in merge

This commit is contained in:
dzaima 2021-07-16 23:11:34 +03:00
parent 9ae1ab80cf
commit 43d2946447

View File

@ -422,7 +422,7 @@ B bqn_merge(B x) { // consumes
ur xr = rnk(x); ur xr = rnk(x);
if (xia==0) { if (xia==0) {
B xf = getFillE(x); B xf = getFillE(x);
if (isAtm(xf)) { dec(xf); return x; } if (isAtm(xf)) { dec(x); dec(xf); return x; }
i32 xfr = rnk(xf); i32 xfr = rnk(xf);
B xff = getFillQ(xf); B xff = getFillQ(xf);
Arr* r = m_fillarrp(0); Arr* r = m_fillarrp(0);
@ -433,6 +433,7 @@ B bqn_merge(B x) { // consumes
memcpy (rsh , a(x)->sh, xr *sizeof(usz)); memcpy (rsh , a(x)->sh, xr *sizeof(usz));
if(xfr)memcpy(rsh+xr, a(xf)->sh, xfr*sizeof(usz)); if(xfr)memcpy(rsh+xr, a(xf)->sh, xfr*sizeof(usz));
} }
dec(x); dec(xf);
return taga(r); return taga(r);
} }