diff options
author | Pádraig Brady <P@draigBrady.com> | 2014-12-01 23:04:36 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2014-12-02 01:20:39 +0000 |
commit | a6d979299717e3769debfa5d295cb2934683077b (patch) | |
tree | c2f56be45168d188b109fd2b7af07fa2e5bbc8de | |
parent | dc1c0523a61932fb0c26a795b7e7391eadf2171a (diff) | |
download | coreutils-a6d979299717e3769debfa5d295cb2934683077b.tar.xz |
maint: avoid signed overflow warning with -O3
Prompted by the implicit -O3 added by american-fuzzy-lop,
seen with GCC 4.9.2 on x86_64.
src/pr.c: In function 'print_files.part.5':
src/pr.c:1781:6: error: assuming signed overflow does not occur
when simplifying conditional to constant [-Werror=strict-overflow]
if (cols_ready_to_print () == 0)
This happens because cols_ready_to_print() is inlined
thus reducing the comparison to the N variable in print_page().
Now this can't overflow due to the protection when parsing the
specified column, but use an unsigned type to avoid the
apparent signed overflow.
* src/pr.c (cols_ready_to_print): Increment an unsigned type to
avoid the subsequent signed overflow warning.
-rw-r--r-- | src/pr.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -768,12 +768,12 @@ static struct option const long_options[] = /* Return the number of columns that have either an open file or stored lines. */ -static int _GL_ATTRIBUTE_PURE +static unsigned int _GL_ATTRIBUTE_PURE cols_ready_to_print (void) { COLUMN *q; - int i; - int n; + unsigned int i; + unsigned int n; n = 0; for (q = column_vector, i = 0; i < columns; ++q, ++i) @@ -1815,7 +1815,7 @@ print_page (void) --p->lines_to_print; if (p->lines_to_print <= 0) { - if (cols_ready_to_print () <= 0) + if (cols_ready_to_print () == 0) break; } @@ -1849,7 +1849,7 @@ print_page (void) --lines_left_on_page; } - if (cols_ready_to_print () <= 0 && !extremities) + if (cols_ready_to_print () == 0 && !extremities) break; if (double_space && pv) |