From: Bo Borgerson Date: Thu, 19 Jun 2008 19:37:21 +0000 (-0400) Subject: sort: Fix bug where --batch-size option shrank SORT_SIZE. X-Git-Tag: v7.0~161 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02bfd65480a24760e49a3cd85d38e8802ea264a5;p=thirdparty%2Fcoreutils.git sort: Fix bug where --batch-size option shrank SORT_SIZE. * src/sort.c (specify_nmerge, main): Only adjust SORT_SIZE if it's already set. * tests/misc/sort-merge: Test bug fix. --- diff --git a/src/sort.c b/src/sort.c index 13935218ab..2039dabf8b 100644 --- a/src/sort.c +++ b/src/sort.c @@ -1105,14 +1105,7 @@ specify_nmerge (int oi, char c, char const *s) e = LONGINT_OVERFLOW; } else - { - /* Need to re-check that we meet the minimum - requirement for memory usage with the new, - potentially larger, nmerge. */ - sort_size = MAX (sort_size, MIN_SORT_SIZE); - - return; - } + return; } } @@ -3320,6 +3313,11 @@ main (int argc, char **argv) files = − } + /* Need to re-check that we meet the minimum requirement for memory + usage with the final value for NMERGE. */ + if (0 < sort_size) + sort_size = MAX (sort_size, MIN_SORT_SIZE); + if (checkonly) { if (nfiles > 1) diff --git a/tests/misc/sort-merge b/tests/misc/sort-merge index a2524c40c3..fb7c63cc13 100755 --- a/tests/misc/sort-merge +++ b/tests/misc/sort-merge @@ -27,6 +27,8 @@ my $prog = 'sort'; # three empty files and one that says 'foo' my @inputs = (+(map{{IN=> {"empty$_"=> ''}}}1..3), {IN=> {foo=> "foo\n"}}); +my $big_input = "aaa\n" x 1024; + # don't need to check for existence, since we're running in a temp dir my $badtmp = 'does/not/exist'; @@ -66,6 +68,11 @@ my @Tests = ['nmerge-no', "-m --batch-size=2 -T$badtmp", @inputs, {ERR_SUBST=>"s|: $badtmp/sort.+||"}, {ERR=>"$prog: cannot create temporary file\n"}, {EXIT=>2}], + + # This used to fail because setting batch-size without also setting + # buffer size would cause the buffer size to be set to the minimum. + ['batch-size', "--batch-size=16 -T$badtmp", {IN=> {big=> $big_input}}, + {OUT=>$big_input}], ); my $save_temps = $ENV{DEBUG};