comparison src/lisp.h @ 39779:15e432be013a

(FIXNUM_OVERFLOW_P): Cast I to EMACS_INT in comparisons in case I is of some unsigned type, in which case MOST_NEGATIVE_FIXNUM will be converted to unsigned, and the comparison becomes bogus.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 11 Oct 2001 19:13:20 +0000
parents 51f74f0f7fce
children b5d09b92489c
comparison
equal deleted inserted replaced
39778:939f548d08cd 39779:15e432be013a
475 #define MOST_POSITIVE_FIXNUM (((EMACS_INT) 1 << (VALBITS - 1)) - 1) 475 #define MOST_POSITIVE_FIXNUM (((EMACS_INT) 1 << (VALBITS - 1)) - 1)
476 476
477 /* Value is non-zero if C integer I doesn't fit into a Lisp fixnum. */ 477 /* Value is non-zero if C integer I doesn't fit into a Lisp fixnum. */
478 478
479 #define FIXNUM_OVERFLOW_P(i) \ 479 #define FIXNUM_OVERFLOW_P(i) \
480 ((i) > MOST_POSITIVE_FIXNUM || (i) < MOST_NEGATIVE_FIXNUM) 480 ((EMACS_INT)(i) > MOST_POSITIVE_FIXNUM \
481 || (EMACS_INT) (i) < MOST_NEGATIVE_FIXNUM)
481 482
482 /* Extract a value or address from a Lisp_Object. */ 483 /* Extract a value or address from a Lisp_Object. */
483 484
484 #define XCONS(a) (eassert (GC_CONSP(a)),(struct Lisp_Cons *) XPNTR(a)) 485 #define XCONS(a) (eassert (GC_CONSP(a)),(struct Lisp_Cons *) XPNTR(a))
485 #define XVECTOR(a) (eassert (GC_VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a)) 486 #define XVECTOR(a) (eassert (GC_VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a))