diff --git a/src/builtins/grade.h b/src/builtins/grade.h index 27c7e078..5d7d634c 100644 --- a/src/builtins/grade.h +++ b/src/builtins/grade.h @@ -35,16 +35,13 @@ TALLOC(usz, c0, C); usz *c0o=c0+C/2; \ for (usz j=0; je; j--) { i+=c0[j]; rp[i]--; } \ - ) \ - for (usz i=1; i0 && !xp[xia-1]) xia--; - for (u64 i = 0; i < xia; i++) { - i32 c = xp[i]; - if (LIKELY(c==0 || c==1)) { - *rp = i; - rp+= c; - } else { + if (s/16 <= xia) { + usz b = 1<<10; + for (usz k=0, j=0, js=0, ij=xp[0]; ; ) { + usz e = b0 && !xp[xia-1]) xia--; + for (u64 i = 0; i < xia; i++) { + i32 c = xp[i]; for (i32 j = 0; j < c; j++) *rp++ = i; } }