Subject: Re: bug#9713: emacs 24.0.90 alloc.c assertion failure

From: Eli Zaretskii <[email-masked]>
Date: Tue, 11 Oct 2011 21:29:06 +0200

> Date: Tue, 11 Oct 2011 17:55:11 GMT
> From: [email-masked] (Karl Berry)
> Cc: [email-masked], [email-masked]
> 
> I have exactly those same values in the same headers.  However, running
> gcc -dD -E on alloc.c (after configuration, with all the same args as
> used for compilation) shows that those values are not being used.
> 
> Instead, Emacs's (gnulib's) lib/stdint.h is being used (why?), which
> unconditionally redefines PTRDIFF_MAX as _STDINT_MAX, which is defined
> in that same file as the RHS here (the LHS is the recognizable value of
> INT_MAX):
> 
> _Static_assert (2147483647 <= ((1) ? ~ ((1) ? (- ((0) + 1) << ((0) ? (0) - 1 : 0)) : (0)) : ((((0) + 1) << ((0) ? (0) - 1 - (1) : 0)) - 1) * 2 + 1), "verify (" "INT_MAX <= PTRDIFF_MAX" ")");
> 
> 
> FWIW, if I reduce the input file to these four lines:
> #include <config.h>
> #include "lisp.h"
> #include <verify.h>
> verify (INT_MAX <= PTRDIFF_MAX);
> 
> And compile with all the same options, I get the same error from verify
> (along with a spurious error about jmp_buf).  Without "lisp.h",
> PTRDIFF_MAX is not defined.

So I think this is the culprit.  Glenn, I guess your system also uses
lib/stdint.h, right?  So what is different?