diff options
author | Pádraig Brady <P@draigBrady.com> | 2012-10-24 10:55:13 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2012-10-25 13:01:13 +0100 |
commit | 0e3294131570837cba068a01ebcea10bdedd67b9 (patch) | |
tree | 68aaa906ca6739cb55cb4c67904d0b894180f770 /tests | |
parent | 88a6201917cad43fd4efea0f1c34c891b70a7414 (diff) | |
download | coreutils-0e3294131570837cba068a01ebcea10bdedd67b9.tar.xz |
pr: fix -n to pad consistently and not crash
* src/pr.c: Replace the code to truncate the most significant
digits of line numbers, with much simpler string manipulation
that supports arbitrary widths. Before this, specifying a
width >= 32 to -n would result in a divide by zero error.
Also remove the inconsistent padding with zeros and spaces, which
would result in zero padding for widths 12 and 15.
* tests/pr/pr-tests.pl: Added a test to ensure no zero padding,
and also a test for the divide by zero case.
* NEWS: Mentioned the fix
Reported by Ondrej Oprala
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/pr/pr-tests.pl | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/pr/pr-tests.pl b/tests/pr/pr-tests.pl index d06b34f8f..e648a9953 100755 --- a/tests/pr/pr-tests.pl +++ b/tests/pr/pr-tests.pl @@ -407,6 +407,13 @@ my @tv = ( # Before coreutils-8.13 page numbers were not handled correctly when # headers were not printed (when -l <= 10 or -t or -T specified) ['page-range', '+1:1 -2 -l1 -s" "', "a\nb\nc\n", "a b\n", 0], + +# This padded with zeros before coreutils-8.21 +['padding1', '-t -n,15', "1\n", (" "x 14)."1,1\n", 0], +# This crashed with divide by zero before coreutils-8.21 +['padding2', '-t -n,64', "1\n", (" "x 63)."1,1\n", 0], +# Ensure we handle buffer truncation correctly +['padding3', '-t -N1000000 -n,1', "1\n", "0,1\n", 0], ); # Convert the above old-style test vectors to the newer |