Subject: Re: bug#79193: 31.0.50; feature/igc: crashes with no gui frame

From: Gerd Möllmann <[email-masked]>
Date: Fri, 08 Aug 2025 04:40:44 +0200

Pip Cet <[email-masked]> writes:

 * src/dispnew.c (line_hash_code) [MPS]: Use 'igc_hash', not the
> address of a movable object, as a hash value.
> ---
>  src/dispnew.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/src/dispnew.c b/src/dispnew.c
> index 1eaab64d876..755422b7cf1 100644
> --- a/src/dispnew.c
> +++ b/src/dispnew.c
> @@ -1192,8 +1192,17 @@ line_hash_code (struct frame *f, struct glyph_row *row)
>  	     index into the frame's face cache), we need the hash
>  	     value to include something specific to the frame, and we
>  	     use the frame cache's address for that purpose.  */
> +#ifndef HAVE_MPS
>  	  if (glyph->frame && glyph->frame != f)
>  	    face_id += (uintptr_t) glyph->frame->face_cache;
> +#else
> +	  if (glyph->frame && glyph->frame != f)
> +	    {
> +	      Lisp_Object face_cache;
> +	      XSETVECTOR (face_cache, glyph->frame->face_cache);
> +	      face_id += igc_hash (face_cache);
                         ^^^^^^^^
BTW, good catch!