From: Paul Eggert Date: Fri, 31 Aug 2018 01:10:18 +0000 (-0700) Subject: Fix bignum FIXME in emacs-module.c X-Git-Tag: emacs-27.0.90~4481 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7c0675af3c9aa7971c37aa9e7afdceae6bfea767;p=emacs.git Fix bignum FIXME in emacs-module.c * src/emacs-module.c: Do not include bignum.h; no longer needed. (module_extract_integer): Use bignum_to_intmax to avoid incorrectly signaling overflow on platforms where intmax_t is wider than long int. --- diff --git a/src/emacs-module.c b/src/emacs-module.c index cf92b0fdb51..2ba5540d9a1 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -27,7 +27,6 @@ along with GNU Emacs. If not, see . */ #include #include "lisp.h" -#include "bignum.h" #include "dynlib.h" #include "coding.h" #include "keyboard.h" @@ -522,11 +521,10 @@ module_extract_integer (emacs_env *env, emacs_value n) CHECK_INTEGER (l); if (BIGNUMP (l)) { - /* FIXME: This can incorrectly signal overflow on platforms - where long is narrower than intmax_t. */ - if (!mpz_fits_slong_p (XBIGNUM (l)->value)) + intmax_t i = bignum_to_intmax (l); + if (i == 0) xsignal1 (Qoverflow_error, l); - return mpz_get_si (XBIGNUM (l)->value); + return i; } return XFIXNUM (l); }