summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2014-12-01 23:04:36 +0000
committerPádraig Brady <P@draigBrady.com>2014-12-02 01:20:39 +0000
commita6d979299717e3769debfa5d295cb2934683077b (patch)
treec2f56be45168d188b109fd2b7af07fa2e5bbc8de
parentdc1c0523a61932fb0c26a795b7e7391eadf2171a (diff)
downloadcoreutils-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.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/pr.c b/src/pr.c
index 39be8be8a..529964985 100644
--- a/src/pr.c
+++ b/src/pr.c
@@ -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)