do {
++pass;
sorter_start_timer(ctx);
- if (ins[0]->runs == 1 && ins[1]->runs == 1 && join)
+ if (ins[0]->runs <= 1 && ins[1]->runs <= 1 && join)
{
// This is guaranteed to produce a single run, so join if possible
outs[0] = join;
if (part_cnt <= 1)
{
- sh_off_t size = sbuck_ins_or_join(clist_head(&parts), list_pos, join, join_size);
+ sh_off_t size = sbuck_ins_or_join(clist_head(&parts), list_pos, (part_cnt ? NULL : join), join_size);
SORT_XTRACE(trace_level, "Sorted in memory (%s, %dMB/s)", stk_fsize(size), sorter_speed(ctx, size));
return;
}