diff options
author | Pádraig Brady <P@draigBrady.com> | 2014-06-18 14:30:57 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2014-06-18 18:05:02 +0100 |
commit | 5ad16c2a0f11e48f1b1e3968b7b390591ce6f908 (patch) | |
tree | c4790e332c6cdc371a6c2cd8babe98979fd47d3a | |
parent | 8a51bd37362cdbfc2fab50458a67452a546dcfaf (diff) | |
download | coreutils-5ad16c2a0f11e48f1b1e3968b7b390591ce6f908.tar.xz |
seq: fix incorrect output with start or end of -0
* src/seq.c (main): Avoid seq_fast() with a start or end of -0.
* tests/misc/seq.pl: Add test cases.
* NEWS: Mention the fix.
Fixes http://bugs.gnu.org/17800
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | src/seq.c | 2 | ||||
-rwxr-xr-x | tests/misc/seq.pl | 3 |
3 files changed, 7 insertions, 1 deletions
@@ -74,6 +74,9 @@ GNU coreutils NEWS -*- outline -*- ptx now consistently trims whitespace when processing multiple files. [This bug was present in "the beginning".] + seq again generates correct output with start or end values = -0. + [bug introduced in coreutils-8.20.] + shuf --repeat no longer dumps core if the input is empty. [bug introduced with the --repeat feature in coreutils-8.22] @@ -604,7 +604,7 @@ main (int argc, char **argv) if (asprintf (&s2, "%0.Lf", last.value) < 0) xalloc_die (); - if (seq_fast (s1, s2)) + if (*s1 != '-' && *s2 != '-' && seq_fast (s1, s2)) { IF_LINT (free (s1)); IF_LINT (free (s2)); diff --git a/tests/misc/seq.pl b/tests/misc/seq.pl index 329e1dfb2..924843637 100755 --- a/tests/misc/seq.pl +++ b/tests/misc/seq.pl @@ -143,6 +143,9 @@ my @Tests = ['not-fast-1', qw(1 3 1), {OUT => [qw(1)]}], ['not-fast-2', qw(1 1 4.2), {OUT => [qw(1 2 3 4)]}], ['not-fast-3', qw(1 1 0)], + # In 8.20..8.22 a start or end of -0 was broken + ['not-fast-4', qw(-0 10), {OUT => [qw(-0 1 2 3 4 5 6 7 8 9 10)]}], + ['not-fast-5', qw(1 -0)], # Ensure the correct parameters are passed to the fast path ['fast-1', qw(4), {OUT => [qw(1 2 3 4)]}], |