diff options
Diffstat (limited to 'clients/terminal.c')
-rw-r--r-- | clients/terminal.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/clients/terminal.c b/clients/terminal.c index beec877f..924549e1 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -772,10 +772,10 @@ terminal_resize_cells(struct terminal *terminal, } else { terminal->max_width = width; data_pitch = width * sizeof(union utf8_char); - data = zalloc(data_pitch * terminal->buffer_height); + data = xzalloc(data_pitch * terminal->buffer_height); attr_pitch = width * sizeof(struct attr); - data_attr = malloc(attr_pitch * terminal->buffer_height); - tab_ruler = zalloc(width); + data_attr = xmalloc(attr_pitch * terminal->buffer_height); + tab_ruler = xzalloc(width); attr_init(data_attr, terminal->curr_attr, width * terminal->buffer_height); @@ -1094,6 +1094,12 @@ redraw_handler(struct widget *widget, void *data) cairo_stroke(cr); } + /* skip space glyph (RLE) we use as a placeholder of + the right half of a double-width character, + because RLE is not available in every font. */ + if (p_row[col].ch == 0x200B) + continue; + glyph_run_add(&run, text_x, text_y, &p_row[col]); } } |