emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 7c0675a: Fix bignum FIXME in emacs-module.c


From: Paul Eggert
Subject: [Emacs-diffs] master 7c0675a: Fix bignum FIXME in emacs-module.c
Date: Thu, 30 Aug 2018 21:11:01 -0400 (EDT)

branch: master
commit 7c0675af3c9aa7971c37aa9e7afdceae6bfea767
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    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.
---
 src/emacs-module.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/emacs-module.c b/src/emacs-module.c
index cf92b0f..2ba5540 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -27,7 +27,6 @@ along with GNU Emacs.  If not, see 
<https://www.gnu.org/licenses/>.  */
 #include <stdio.h>
 
 #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);
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]