Subject: bug#11813: bug#11850: crash (null font) running emacs built from git

From: Eli Zaretskii <[email-masked]>
Date: Thu, 05 Jul 2012 19:54:59 +0300

> Date: Thu, 5 Jul 2012 16:33:30 +0300
> From: Left Right <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > (gdb) p s->f->output_data.x->font
> > (gdb) p *(s->f->output_data.x->font)
> 
> (gdb) frame 3
> #3  0x000000000048eb18 in fill_glyphless_glyph_string
> (s=0x7fffffffba40, face_id=13, start=8, end=68, overlaps=0) at
> xdisp.c:22578
> 22578     eassert (s->font);
> (gdb) p s->f->output_data.x->font
> $1 = (struct font *) 0x146efd8
> (gdb) p *(s->f->output_data.x->font)
> $2 = {header = {size = 4611686018429485074, next = {nbytes = 264,
> buffer = 0x108, vector = 0x108}}, props = {15296386, 15541218,
> 15541266, 15541170, 15362930, 102728, 102532, 102656, 68,
>     400, 0, 400, 18785894, 15120722, 15558113, 15558113, 15120722,
> 15296386}, max_width = 40, pixel_size = 17, height = 18, space_width =
> 10, average_width = 10, min_width = 10,
>   ascent = 14, descent = 4, underline_thickness = 1,
> underline_position = 2, vertical_centering = 0, encoding_type = 0
> '\000', baseline_offset = 0, relative_compose = 0,
>   default_ascent = 0, font_encoder = 0x1000040800001008, driver =
> 0xdd5f60, encoding_charset = 1, repertory_charset = 1}
> (gdb)

OK, then does the following patch fix the problem?

--- src/xdisp.c	2012-07-05 16:28:34 +0000
+++ src/xdisp.c	2012-07-05 16:51:53 +0000
@@ -22604,7 +22604,7 @@ fill_glyphless_glyph_string (struct glyp
   last = s->row->glyphs[s->area] + end;
   voffset = glyph->voffset;
   s->face = FACE_FROM_ID (s->f, face_id);
-  s->font = s->face->font;
+  s->font = s->face->font ? s->face->font : FRAME_FONT (s->f);
   s->nchars = 1;
   s->width = glyph->pixel_width;
   glyph++;