Subject: Re: bug#75199: 30.0.93; Emacs crashes when completing with corfu

From: Daniel Mendler <[email-masked]>
Date: Mon, 30 Dec 2024 19:00:45 +0100

Zhengyi Fu <[email-masked]> writes:

> On 2024-12-30 23:24, Eli Zaretskii wrote:
>
>> Earlier you wrote:
>> 
>>> The error is probably caused by the width value of 0 passed to
>>> XCreatePixmapFromBitmapData().
>>> It seems gui_intersect_rectangles() returns true even if the resulted
>>> rectangle is empty.  Is that correct behavior?
>> Can you tell how this happens?  Is corfu doing something special with
>> the fringes?
>
> I noticed the following calls in corfu--popup-show before the error:
>
> * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic))
> * define-fringe-bitmap(corfu--nil [])

I've adjusted the second call to the following, also for compatibility
with older Emacs versions.

(define-fringe-bitmap 'corfu--nil [0] 1 1)

For the future, maybe `define-fringe-bitmap' should either check its
argument carefully and disallow empty bitmaps, or empty bitmaps should
be explicitly allowed? I've not seen reports about crashes on other
builds, e.g., X11+Cairo or the NS and Carbon builds for Mac. These
builds seem to support empty fringe bitmaps.

Daniel