X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsorter%2Fgovern.c;h=524b0c905d739734ebe0aab372d67ebf1d336fd6;hb=25bf4841c44bcaedf393cf900174a166a8021fb9;hp=745f6b05b1cc95cce0371350959c02b2a4c00baf;hpb=fe6dc0daa9980627429b4ece23a51f971dd9698a;p=libucw.git diff --git a/lib/sorter/govern.c b/lib/sorter/govern.c index 745f6b05..524b0c90 100644 --- a/lib/sorter/govern.c +++ b/lib/sorter/govern.c @@ -199,6 +199,7 @@ sorter_multiway(struct sort_context *ctx, struct sort_bucket *b) cont = sorter_presort(ctx, b, p, (!part_cnt && join) ? join : p); part_cnt++; total_size += sbuck_size(p); + sbuck_swap_out(p); } while (cont); sorter_stop_timer(ctx, &ctx->total_pre_time); @@ -212,7 +213,7 @@ sorter_multiway(struct sort_context *ctx, struct sort_bucket *b) { ASSERT(join->runs == 2); join->runs--; - sbuck_drop(b); + sbuck_drop(p); } else clist_insert_after(&p->n, list_pos); @@ -255,6 +256,7 @@ sorter_multiway(struct sort_context *ctx, struct sort_bucket *b) } else { + sbuck_swap_out(out); clist_add_tail(&parts, &out->n); SORT_TRACE("Multi-way merge pass (%d ways, %s, %dMB/s)", n, F_BSIZE(out), sorter_speed(ctx, sbuck_size(out))); }