1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-09 15:50:21 +00:00

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.
This commit is contained in:
Eli Zaretskii 2022-06-02 13:41:59 +03:00
parent bfa647972f
commit ef5651cc77

View File

@ -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);
}
}
}