mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-24 10:23:31 +08:00
shuf: with -r, don't dump core if the input is empty
Problem reported by valiant xiao in <http://bugs.gnu.org/16855>. * NEWS: Document this. * src/shuf.c (main): With -r, report an error if the input is empty. * tests/misc/shuf.sh: Test for the bug.
This commit is contained in:
parent
85c925ef54
commit
9f60f37a28
3
NEWS
3
NEWS
@ -22,6 +22,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||
it would display an error, requiring --no-dereference to avoid the issue.
|
||||
[bug introduced in coreutils-5.3.0]
|
||||
|
||||
shuf -r no longer dumps core if the input is empty.
|
||||
[bug introduced in coreutils-8.22]
|
||||
|
||||
** New features
|
||||
|
||||
od accepts a new option: --endian=TYPE to handle inputs with different byte
|
||||
|
15
src/shuf.c
15
src/shuf.c
@ -576,11 +576,18 @@ main (int argc, char **argv)
|
||||
/* Generate output according to requested method */
|
||||
if (repeat)
|
||||
{
|
||||
if (input_range)
|
||||
i = write_random_numbers (randint_source, head_lines,
|
||||
lo_input, hi_input, eolbyte);
|
||||
if (head_lines == 0)
|
||||
i = 0;
|
||||
else
|
||||
i = write_random_lines (randint_source, head_lines, line, n_lines);
|
||||
{
|
||||
if (n_lines == 0)
|
||||
error (EXIT_FAILURE, 0, _("No lines to repeat"));
|
||||
if (input_range)
|
||||
i = write_random_numbers (randint_source, head_lines,
|
||||
lo_input, hi_input, eolbyte);
|
||||
else
|
||||
i = write_random_lines (randint_source, head_lines, line, n_lines);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -43,6 +43,10 @@ compare in out1 || { fail=1; echo "not a permutation" 1>&2; }
|
||||
t=$(shuf -e a b c d e | sort | fmt)
|
||||
test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; }
|
||||
|
||||
# coreutils-8.22 dumps core.
|
||||
shuf -er
|
||||
test $? -eq 1 || fail=1
|
||||
|
||||
# Before coreutils-6.3, this would infloop.
|
||||
# "seq 1860" produces 8193 (8K + 1) bytes of output.
|
||||
seq 1860 | shuf > /dev/null || fail=1
|
||||
|
Loading…
Reference in New Issue
Block a user