From bf718ebcb3ba3b12871eb293f49d80915cc05b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Sun, 2 Feb 2020 16:06:48 +0000 Subject: read-file: reduce max size from SIZE_MAX to PTRDIFF_MAX On x86_64 with glibc-2.30, gcc 9.2 is giving: error: argument 2 value '18446744073709551615' exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=] The details of this restriction are discussed at: https://stackoverflow.com/q/42574890/4421 * lib/read-file.c: s/SIZE_MAX/PTRDIFF_MAX/ --- lib/read-file.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/read-file.c') diff --git a/lib/read-file.c b/lib/read-file.c index 50bb00f0cd..c6f230178c 100644 --- a/lib/read-file.c +++ b/lib/read-file.c @@ -25,7 +25,7 @@ /* Get ftello. */ #include -/* Get SIZE_MAX. */ +/* Get PTRDIFF_MAX. */ #include /* Get malloc, realloc, free. */ @@ -59,7 +59,7 @@ fread_file (FILE *stream, size_t *length) off_t alloc_off = st.st_size - pos; /* '1' below, accounts for the trailing NUL. */ - if (SIZE_MAX - 1 < alloc_off) + if (PTRDIFF_MAX - 1 < alloc_off) { errno = ENOMEM; return NULL; @@ -107,16 +107,16 @@ fread_file (FILE *stream, size_t *length) { char *new_buf; - if (alloc == SIZE_MAX) + if (alloc == PTRDIFF_MAX) { save_errno = ENOMEM; break; } - if (alloc < SIZE_MAX - alloc / 2) + if (alloc < PTRDIFF_MAX - alloc / 2) alloc = alloc + alloc / 2; else - alloc = SIZE_MAX; + alloc = PTRDIFF_MAX; if (!(new_buf = realloc (buf, alloc))) { -- cgit v1.2.1