diff --git a/src/lisp.h b/src/lisp.h index c2cb89de9d..c45e35178e 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2661,8 +2661,10 @@ make_uint (uintmax_t n) } /* Return a Lisp integer equal to the value of the C integer EXPR. */ -#define INT_TO_INTEGER(expr) \ - (EXPR_SIGNED (expr) ? make_int (expr) : make_uint (expr)) +#define INT_TO_INTEGER(expr) \ + (sizeof (expr) < sizeof (EMACS_INT) \ + ? make_fixnum (expr) \ + : (EXPR_SIGNED (expr) ? make_int (expr) : make_uint (expr))) /* Forwarding pointer to an int variable.