aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c6
-rw-r--r--src/bignum.c7
2 files changed, 8 insertions, 5 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 5c5b56d02e9..64aaa8acdfa 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -7369,9 +7369,9 @@ The time is in seconds as a floating point value. */);
7369 doc: /* Accumulated number of garbage collections done. */); 7369 doc: /* Accumulated number of garbage collections done. */);
7370 7370
7371 DEFVAR_INT ("integer-width", integer_width, 7371 DEFVAR_INT ("integer-width", integer_width,
7372 doc: /* Maximum number of bits in bignums. 7372 doc: /* Maximum number N of bits in safely-calculated integers.
7373Integers outside the fixnum range are limited to absolute values less 7373Integers with absolute values less than 2**N do not signal a range error.
7374than 2**N, where N is this variable's value. N should be nonnegative. */); 7374N should be nonnegative. */);
7375 7375
7376 defsubr (&Scons); 7376 defsubr (&Scons);
7377 defsubr (&Slist); 7377 defsubr (&Slist);
diff --git a/src/bignum.c b/src/bignum.c
index 009d73118c2..3883d3a3944 100644
--- a/src/bignum.c
+++ b/src/bignum.c
@@ -82,8 +82,11 @@ static Lisp_Object
82make_bignum_bits (size_t bits) 82make_bignum_bits (size_t bits)
83{ 83{
84 /* The documentation says integer-width should be nonnegative, so 84 /* The documentation says integer-width should be nonnegative, so
85 a single comparison suffices even though 'bits' is unsigned. */ 85 comparing it to BITS works even though BITS is unsigned. Treat
86 if (integer_width < bits) 86 integer-width as if it were at least twice the machine integer width,
87 so that timefns.c can safely use bignums for double-precision
88 timestamps. */
89 if (integer_width < bits && 2 * max (INTMAX_WIDTH, UINTMAX_WIDTH) < bits)
87 overflow_error (); 90 overflow_error ();
88 91
89 struct Lisp_Bignum *b = ALLOCATE_PLAIN_PSEUDOVECTOR (struct Lisp_Bignum, 92 struct Lisp_Bignum *b = ALLOCATE_PLAIN_PSEUDOVECTOR (struct Lisp_Bignum,