From a6d979299717e3769debfa5d295cb2934683077b Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Mon, 1 Dec 2014 23:04:36 +0000 Subject: 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. --- src/pr.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') 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) -- cgit v1.2.3-54-g00ecf