# HG changeset patch # User Stefan Monnier # Date 1082587313 0 # Node ID 35a889bb25b77d235394417886ee3c415512c4a2 # Parent b8afe141e350a5c47c40846ca8e052c35d74e866 (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]: Don't make assumptions about the relative place of i and val. (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well. diff -r b8afe141e350 -r 35a889bb25b7 src/lisp.h --- a/src/lisp.h Wed Apr 21 22:37:16 2004 +0000 +++ b/src/lisp.h Wed Apr 21 22:41:53 2004 +0000 @@ -382,7 +382,7 @@ #ifdef EXPLICIT_SIGN_EXTEND /* Make sure we sign-extend; compilers have been known to fail to do so. */ -#define XINT(a) (((a).i << (BITS_PER_EMACS_INT - VALBITS)) \ +#define XINT(a) (((a).s.val << (BITS_PER_EMACS_INT - VALBITS)) \ >> (BITS_PER_EMACS_INT - VALBITS)) #else #define XINT(a) ((a).s.val) @@ -400,7 +400,7 @@ extern Lisp_Object make_number (); #endif -#define EQ(x, y) ((x).s.val == (y).s.val) +#define EQ(x, y) ((x).s.val == (y).s.val && (x).s.type == (y).s.type) #endif /* NO_UNION_TYPE */