X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fsorter.h;h=15ff9bf7b16bc0378b8231a579cd7035ea8dd088;hb=7490dc318191ad60efcb34e4a7eef14efdd141aa;hp=4c7f19904be4f21944044c1a16b26adc4112ea3c;hpb=7e4c6c5e84aa5238d6223bc39b8c8b3d875385aa;p=libucw.git diff --git a/lib/sorter.h b/lib/sorter.h index 4c7f1990..15ff9bf7 100644 --- a/lib/sorter.h +++ b/lib/sorter.h @@ -1,5 +1,5 @@ /* - * Sherlock Library -- Universal Sorter + * UCW Library -- Universal Sorter * * (c) 2001--2004 Martin Mares * (c) 2004 Robert Spalek @@ -279,7 +279,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) struct fastbuf *tbuf; uns buf_items = sorter_presort_bufsize / sizeof(SORT_KEY); uns run_count = 0; - SORT_KEY last_out, *array; + SORT_KEY last_out = { }, *array; ASSERT(!*fb2); if (buf_items < 2) @@ -304,7 +304,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) { run_count++; #ifdef SORT_UP_TO - if (sorter_presort_bufsize < SORT_UP_TO) + if (sorter_presort_bufsize < (uns) SORT_UP_TO) #endif SWAP(out1, out2, tbuf); if (!out1) @@ -531,11 +531,16 @@ struct fastbuf *fb1, struct fastbuf *fb2 do P(pass)(&fb1, &fb2); while (fb1 && fb2); #else { - sh_off_t run_count = ~0U, max_run_count = 0; + sh_off_t run_count, max_run_count = 0; if (fb1) max_run_count += bfilesize(fb1); if (fb2) max_run_count += bfilesize(fb2); +#ifdef SORT_PRESORT + run_count = max_run_count / sorter_presort_bufsize; +#else + run_count = max_run_count; +#endif if (SORT_UP_TO) max_run_count /= SORT_UP_TO; do