Mercurial > emacs
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)) |