Subject: bug#50699: 28.0.50; Assertation failed when built with checking and mouse face is set to :box 0

From: Eli Zaretskii <[email-masked]>
Date: Mon, 20 Sep 2021 15:54:11 +0300

> Date: Mon, 20 Sep 2021 15:23:08 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked]
> 
> > When I set the box of the mouse face on a section of text to 0, such as
> > with (insert (propertize "abc" foo 'mouse-face '(:box 0))), and move the
> > mouse over that, and I build with enable-checking, Emacs crashes with:
> > 
> > xfaces.c:5976: Emacs fatal error: assertion failed: XFIXNUM (box) != 0
> > Fatal error 6: Aborted
> 
> Thanks, should be fixed now.

Btw, there's a lot of strange stuff going on with this.

First, we accept (:box N) and (:box (N . M)) forms, but they are not
documented.  The form (:box (:line-width (N . M))) is also
undocumented.

Second, we disallow zero in (:box 0), but allow it in (:box (0 . 0))
and also in (:box (:line-width 0)) (and handle them as if 1 was
specified instead of zero).

It looks like this didn't change since Emacs 21, so it isn't bitrot of
any kind.

Does anyone know why we have these strange inconsistencies?