diff --git a/pkg/noun/jets/c/mas.c b/pkg/noun/jets/c/mas.c index 4542647794..a024b51860 100644 --- a/pkg/noun/jets/c/mas.c +++ b/pkg/noun/jets/c/mas.c @@ -29,19 +29,14 @@ u3qc_mas(u3_atom a) return u3i_chub(a_d); } else { - c3_w len_w, top_w; - u3i_slab sab_u; + u3i_slab sab_u; + u3i_slab_from(&sab_u, a, 0, --b_w); - u3i_slab_from(&sab_u, a, 0, b_w - 1); - len_w = sab_u.len_w - 1; - top_w = sab_u.buf_w[len_w]; + sab_u.buf_w[(b_w >> 5)] &= ((c3_w)1 << (b_w & 31)) - 1; + b_w--; + sab_u.buf_w[(b_w >> 5)] |= ((c3_w)1 << (b_w & 31)); - b_w &= 31; - top_w &= ((c3_w)1 << (b_w - 1)) - 1; - top_w |= ((c3_w)1 << (b_w - 2)); - - sab_u.buf_w[len_w] = top_w; - return u3i_slab_moot(&sab_u); + return u3i_slab_mint(&sab_u); } } }