Subject: Re: bug#73752: 29.4; Ligatures are randomly rendered with extra spaces

From: Eli Zaretskii <[email-masked]>
Date: Sat, 02 Nov 2024 19:44:31 +0200

> From: Visuwesh <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sat, 02 Nov 2024 23:09:40 +0530
> 
> [சனி நவம்பர் 02, 2024] Eli Zaretskii wrote:
> 
> >> >> >  What does GDB show if you type
> >> >> >
> >> >> >   (gdb) p LGLYPH_ADJUSTMENT(lglyph)
> >> >> >   (gdb) p Qnil
> >> >> 
> >> >>     (gdb) p LGLYPH_ADJUSTMENT(lglyph)
> >> >>     $3 = XIL(0)
> >> >>     (gdb) p Qnil
> >> >>     $4 = XIL(0)
> >> >
> >> > OK, but then why did the breakpoint break, when the condition is
> >> > obviously false: LGLYPH_ADJUSTMENT(lglyph) == Qnil.
> >> >
> >> > What happens if you type this:
> >> >
> >> >   (gdb) p Qnil+0
> >> 
> >>     (gdb) p Qnil+0
> >>     Attempt to take address of value not located in memory.
> >
> > And this:
> >
> >   (gdb) ptype Qnil
> 
>     (gdb) ptype Qnil
>     type = struct Lisp_Object {
>         Lisp_Word i;
>     }

Ah, that explains the problem.  Then please change the breakpoint
condition to say this instead, and re-run the experiment:

 break hbfont.c:598 if xoff == 0 && yoff == 0 && wadjust == metrics.width && ((struct Lisp_Object)LGLYPH_ADJUSTMENT(lglyph)).i != 0