From fa4dd8dd01b87b751abd74408ddd581263d6b839 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 8 Dec 2018 22:53:15 -0800 Subject: [PATCH] Port VECTOR_ELTS_MAX to older GCC etc. Problem reported by Eli Zaretskii in: https://lists.gnu.org/r/emacs-devel/2018-12/msg00182.html * src/alloc.c (VECTOR_ELTS_MAX): Now a macro. Needed for portability to older GCC and non-GCC. --- src/alloc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 3bc9277a7b2..d34b34f27d8 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -3336,10 +3336,13 @@ sweep_vectors (void) } } -static ptrdiff_t const VECTOR_ELTS_MAX - = min (((min (PTRDIFF_MAX, SIZE_MAX) - header_size - large_vector_offset) - / word_size), - MOST_POSITIVE_FIXNUM); +/* Maximum number of elements in a vector. This is a macro so that it + can be used in an integer constant expression. */ + +#define VECTOR_ELTS_MAX \ + min (((min (PTRDIFF_MAX, SIZE_MAX) - header_size - large_vector_offset) \ + / word_size), \ + MOST_POSITIVE_FIXNUM) /* Value is a pointer to a newly allocated Lisp_Vector structure with room for LEN Lisp_Objects. LEN must be positive and -- 2.39.2