diff options
| author | joerg <joerg@NetBSD.org> | 2015-09-12 19:05:11 +0000 |
|---|---|---|
| committer | joerg <joerg@NetBSD.org> | 2015-09-12 19:05:11 +0000 |
| commit | f5410fa014ae5c4496348850133dbff33ef97616 (patch) | |
| tree | be24fb86c39c48658afb117bf648ae608cff1aea /gnu | |
| parent | 3dcab71c1e5b5a95b255c2e4ca4915ced8f85926 (diff) | |
Avoid TYPE_MAXIMUM, it depends on undefined behavior.
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/dist/grep/src/grep.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gnu/dist/grep/src/grep.c b/gnu/dist/grep/src/grep.c index c86be9e8f67..09a5b69a189 100644 --- a/gnu/dist/grep/src/grep.c +++ b/gnu/dist/grep/src/grep.c @@ -1,4 +1,4 @@ -/* $NetBSD: grep.c,v 1.15 2014/06/12 07:42:46 dholland Exp $ */ +/* $NetBSD: grep.c,v 1.16 2015/09/12 19:05:11 joerg Exp $ */ /* grep.c - main driver file for grep. Copyright 1992, 1997-1999, 2000 Free Software Foundation, Inc. @@ -53,6 +53,13 @@ struct stats struct stat stat; }; +#include <limits.h> +#define MAX_OFF_T (sizeof(off_t) == sizeof(char) ? INT_MAX : \ + (sizeof(off_t) == sizeof(short) ? SHRT_MAX : \ + (sizeof(off_t) == sizeof(int) ? INT_MAX : \ + (sizeof(off_t) == sizeof(long) ? LONG_MAX : \ + (sizeof(off_t) == sizeof(long long) ? LLONG_MAX : INTMAX_MAX))))) + /* base of chain of stat buffers, used to detect directory loops */ static struct stats stats_base; @@ -1341,7 +1348,7 @@ main (int argc, char **argv) eolbyte = '\n'; filename_mask = ~0; - max_count = TYPE_MAXIMUM (off_t); + max_count = MAX_OFF_T; /* The value -1 means to use DEFAULT_CONTEXT. */ out_after = out_before = -1; @@ -1516,7 +1523,7 @@ main (int argc, char **argv) break; /* Fall through. */ case LONGINT_OVERFLOW: - max_count = TYPE_MAXIMUM (off_t); + max_count = MAX_OFF_T; break; default: |
