terminal: regression: char printed to wrong column

When term_print() was implemented, it introduced a regression where
printing a character when the last cursor was in the last column on a
line would print the character in the wrong column.

This is because term_print() retrieved a pointer to the current
cell *before* line wrapping (and possibly inserting empty cells).
This commit is contained in:
Daniel Eklöf 2020-01-22 18:22:15 +01:00
parent d6ea676ef2
commit 08eb0532ad
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -1894,12 +1894,13 @@ term_print(struct terminal *term, wchar_t wc, int width)
if (unlikely(width <= 0))
return;
struct row *row = term->grid->cur_row;
struct cell *cell = &row->cells[term->cursor.point.col];
print_linewrap(term);
print_insert(term, width);
/* *Must* get current cell *after* linewrap+insert */
struct row *row = term->grid->cur_row;
struct cell *cell = &row->cells[term->cursor.point.col];
cell->wc = term->vt.last_printed = wc;
cell->attrs = term->vt.attrs;