From: Paul Eggert Date: Sun, 9 Dec 2018 06:53:15 +0000 (-0800) Subject: Port VECTOR_ELTS_MAX to older GCC etc. X-Git-Tag: emacs-27.0.90~4019 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fa4dd8dd01b87b751abd74408ddd581263d6b839;p=emacs.git 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. --- 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