erase-cells: don't memset when keeping background color

This commit is contained in:
Daniel Eklöf 2019-08-20 21:11:09 +02:00
parent 71c6f11e86
commit 776432ded3
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -163,13 +163,15 @@ erase_cell_range(struct terminal *term, struct row *row, int start, int end)
assert(start < term->cols);
assert(end < term->cols);
memset(&row->cells[start], 0, (end - start + 1) * sizeof(row->cells[0]));
if (unlikely(term->vt.attrs.have_bg)) {
for (int col = start; col <= end; col++) {
row->cells[col].attrs.have_bg = 1;
row->cells[col].attrs.bg = term->vt.attrs.bg;
struct cell *c = &row->cells[col];
c->wc = 0;
c->attrs = (struct attributes){.have_bg = 1, .bg = term->vt.attrs.bg};
}
}
} else
memset(&row->cells[start], 0, (end - start + 1) * sizeof(row->cells[0]));
row->dirty = true;
}