diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | src/seq.c | 8 |
3 files changed, 16 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2007-11-17 Jim Meyering <meyering@redhat.com> + + "seq .1 .1" would mistakenly generate no output on some systems + * NEWS: Say this. + * src/seq.c (print_numbers): Handle another floating point corner case. + This avoids failure of seq's eq-wid-7 test on FreeBSD 6.1. + 2007-11-16 Paul Eggert <eggert@cs.ucla.edu> Port tests/rmdir/ignore away from GNU/Linux. @@ -142,6 +142,8 @@ GNU coreutils NEWS -*- outline -*- seq would mistakenly reject some valid format strings containing %%, and would mistakenly accept some invalid ones. e.g., %g%% and %%g, resp. + "seq .1 .1" would mistakenly generate no output on some systems + Obsolete sort usage with an invalid ordering-option character, e.g., "env _POSIX2_VERSION=199209 sort +1x" no longer makes sort free an invalid pointer [introduced in coreutils-6.5] @@ -280,7 +280,13 @@ print_numbers (char const *fmt, struct layout layout, free (x_str); } - break; + /* With floating point arithmetic, we may well reach this point + with i == 0 and first == last. E.g., ./seq .1 .1 on FreeBSD 6.1. + Hence the first conjunct: don't break out of this loop when + i == 0. *unless* first and last themselves are out of order, + in which case we must print nothing, e.g. for ./seq -1 */ + if (i || last < first) + break; } if (i) |