Subject: Re: bug#47832: 28.0.50; define-fringe-bitmap and emacs --daemon

From: Gregory Heytings <[email-masked]>
Date: Tue, 25 May 2021 13:24:14 +0000

>> There are three kind of bitmaps:
>>
>> 1. standard bitmaps not overridden by user-defined bitmaps
>> 2. standard bitmaps overridden by user-defined bitmaps
>> 3. user-defined bitmaps
>>
>> The first loop processes the bitmaps of the first kind, the second loop 
>> the bitmaps of the second and third kind.
>
> I'm asking why do we need to process the second kind here.  That kind 
> was already set up when user initializations defined replacements for 
> those standard bitmaps.  Right?  So why do we need to set them up again?
>

What you write is correct when you call "emacs", not when you call "emacs 
--daemon".  In the latter case the user-defined bitmaps have not yet been 
set up.  It's explained in the comment:

    /* Set up user-defined fringe bitmaps that might have been defined
       before the frame of this kind was initialized.  This can happen
       if Emacs is started as a daemon and the init files define fringe
       bitmaps.  */

The code was written under the erroneous assumption that there are only 
two kind of bitmaps: standard bitmaps and user-defined bitmaps.  Hence the 
bug that this patch fixes.