diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index d112202b..3ef6223b 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -1296,7 +1296,7 @@ B transp_c1(B t, B x) { r = (Arr*) rp.c; } else { #ifndef __BMI2__ - if (xe==el_bit) { x = taga(cpyI8Arr(x)); xsh=SH(x); xe=el_i8; } + if (xe==el_bit) { x = taga(cpyI8Arr(x)); xsh=SH(x); xe=el_i8; toBit=true; } void* rp = m_tyarrp(&r,elWidth(xe),ia,el2t(xe)); #else void* rp = m_tyarrlbp(&r,elWidthLogBits(xe),ia,el2t(xe)); @@ -1318,6 +1318,30 @@ B transp_c1(B t, B x) { case el_f64: { u64* x0=xp; u64* x1=x0+w; for (usz i=0; isz) { printf("Bad used range: "N64u".."N64u", allocation size "N64u"\n", start, end, sz); exit(1); } + if (end+64>sz) { printf("Bad used range: "N64u".."N64u", allocation size "N64u"\n", start, end, sz); __builtin_trap(); } } void tailVerifyReinit(void* ptr, u64 filled, u64 end) { - if(filled>end || filled<=8) { printf("Bad reinit arguments: "N64u".."N64u"\n", filled, end); exit(1); } + if(filled>end || filled<=8) { printf("Bad reinit arguments: "N64u".."N64u"\n", filled, end); __builtin_trap(); } verifyEnd(ptr, mm_size(ptr), filled, end); tailVerifyInit(ptr, filled, end, mm_size(ptr)); }