emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building the igc branch on MS-Windows


From: Gerd Möllmann
Subject: Re: Building the igc branch on MS-Windows
Date: Sat, 27 Apr 2024 15:26:35 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Gerd Möllmann <gerd.moellmann@gmail.com>
>> Cc: eller.helmut@gmail.com,  emacs-devel@gnu.org
>> Date: Sat, 27 Apr 2024 14:09:26 +0200
>> 
>> Inaccessible memory in my experience so far means that the corresponding
>> object has either been moved by MPS, or it has been "freed", by not
>> copying it.
>> 
>> So, as an ansatz, let's assume the font in question has been moved. It
>> would follow, I think, that it is not a face->font right? Because
>> otherwise the reference to the the font would have been traced. The
>> question would be where the reference to the font comes from?
>
> It _is_ face->font.  We get to it like this:
>
>   void
>   gui_produce_glyphs (struct it *it)
>   {
>     int extra_line_spacing = it->extra_line_spacing;
>
>     it->glyph_not_available_p = false;
>
>     if (it->what == IT_CHARACTER)
>       {
>       unsigned char2b;
>       struct face *face = FACE_FROM_ID (it->f, it->face_id);
>       struct font *font = face->font; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
>
> IOW, the display iterator references a face by its ID, and we access
> that face via the frame's face cache.  As I wrote in a previous
> message, all the faces in the cache after index 21 are clobbered,
> although the cache's 'used' count is 57, and the index of the
> problematic face is 22.

Good!

Can you something wrong ub fix_face_cache (please see the other mail I
sent)?

And then, do we have other references to face_cache than from the frame?
Maybe I've missed one?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]