Subject: Re: bug#21999: 25.0.50; Binary with --enable-checking immediately aborts with '0<=size'

From: Eli Zaretskii <[email-masked]>
Date: Wed, 25 Nov 2015 19:34:00 +0200

> Cc: [email-masked], [email-masked]
> From: Paul Eggert <[email-masked]>
> Date: Tue, 24 Nov 2015 23:52:57 -0800
> 
> Eli Zaretskii wrote:
> > After all, the size field of the pseudo-vector object is not
> > really a size, but a bunch of bitfields, so I'm not sure testing it in
> > its entirety makes sense.  Paul?
> 
> The point of the eassume is that it improves code quality in the common case 
> where the size field is actually a size, since the compiler can generate better 
> code when it knows that sizes are nonnegative.  Also, it should improve checking 
> a bit, in case someone trashes a size field.
> 
> Looks like this is more trouble than it's worth, and we should get rid of that 
> eassume, at least in emacs-25.  Or have you fixed it?

I fixed this particular issue, which happened because several macros
on font.h used ASIZE and were called in the context of GC.  Now each
such macro has a GC_* variant that calls gc_asize instead.  If that's
a clean enough solution, we can safely move on.  I was just worried
that ASIZE is no longer safe in GC, and any macro that uses it becomes
unsafe.  But currently, any such remaining macros aren't called by GC
code, so there are no more known problems, just a subtlety.