From: Eli Zaretskii Date: Thu, 2 Jun 2022 10:41:59 +0000 (+0300) Subject: Fix segfaults when starting on 80x26 TTY frames X-Git-Tag: emacs-28.1.90~53 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ef5651cc77;p=emacs.git Fix segfaults when starting on 80x26 TTY frames * src/dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Make sure we have valid frame glyph matrices for the interactive session. (Bug#55760) (adjust_frame_glyphs): Add assertions for when we fail to allocate valid frame glyph matrices for a TTY frame. --- diff --git a/src/dispnew.c b/src/dispnew.c index 332ba54ee74..39e5469db05 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -1837,7 +1837,18 @@ adjust_frame_glyphs (struct frame *f) if (FRAME_WINDOW_P (f)) adjust_frame_glyphs_for_window_redisplay (f); else - adjust_frame_glyphs_for_frame_redisplay (f); + { + adjust_frame_glyphs_for_frame_redisplay (f); + eassert (FRAME_INITIAL_P (f) + || noninteractive + || !initialized + || (f->current_matrix + && f->current_matrix->nrows > 0 + && f->current_matrix->rows + && f->desired_matrix + && f->desired_matrix->nrows > 0 + && f->desired_matrix->rows)); + } /* Don't forget the buffer for decode_mode_spec. */ adjust_decode_mode_spec_buffer (f); @@ -2119,6 +2130,19 @@ adjust_frame_glyphs_for_frame_redisplay (struct frame *f) SET_FRAME_GARBAGED (f); } } + else if (!FRAME_INITIAL_P (f) && !noninteractive && initialized) + { + if (!f->desired_matrix->nrows || !f->desired_matrix->rows) + { + adjust_glyph_matrix (NULL, f->desired_matrix, 0, 0, matrix_dim); + SET_FRAME_GARBAGED (f); + } + if (!f->current_matrix->nrows || !f->current_matrix->rows) + { + adjust_glyph_matrix (NULL, f->current_matrix, 0, 0, matrix_dim); + SET_FRAME_GARBAGED (f); + } + } }