Pádraig Brady wrote: ... > I expect to push soon, the attached more complete fix to realloc the array.
That new test would still fail on 32-bit systems, and on any system with SIZE_MAX < 1E. I expect to push the additional fix below. As for testing, I can't think of anything better than to suggest testing in a 32-bit virtual machine. >From 8c647adfcd7d9ae66f7759f1bbf9ac3f78c23503 Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Sun, 26 May 2013 09:49:22 -0700 Subject: [PATCH] head: with --bytes=-N don't fail early for large N on 32-bit systems * src/head.c (elide_tail_bytes_pipe): The new test would fail unnecessarily on 32-bit systems, where SIZE_MAX < 1E. --- src/head.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/head.c b/src/head.c index 00e1be1..6b7758f 100644 --- a/src/head.c +++ b/src/head.c @@ -221,13 +221,6 @@ elide_tail_bytes_pipe (const char *filename, int fd, uintmax_t n_elide_0) "HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD must be at least 2 * READ_BUFSIZE" #endif - if (SIZE_MAX < n_elide_0 + READ_BUFSIZE) - { - char umax_buf[INT_BUFSIZE_BOUND (n_elide_0)]; - error (EXIT_FAILURE, 0, _("%s: number of bytes is too large"), - umaxtostr (n_elide_0, umax_buf)); - } - /* Two cases to consider... 1) n_elide is small enough that we can afford to double-buffer: allocate 2 * (READ_BUFSIZE + n_elide) bytes -- 1.8.3
