From: David Herrmann Date: Sun, 30 Nov 2014 13:37:12 +0000 (+0100) Subject: terminal/screen: fix GL/GR double-mapping X-Git-Tag: v218~186 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=5eb9e762eab5faa1bc995a39ebbb8fc694755c3e terminal/screen: fix GL/GR double-mapping We must not call screen_map() multiple times for the same input char. Fix the double-mapping for GL/GR maps are correctly applied. --- diff --git a/src/libsystemd-terminal/term-screen.c b/src/libsystemd-terminal/term-screen.c index acd7cc966..51d93765e 100644 --- a/src/libsystemd-terminal/term-screen.c +++ b/src/libsystemd-terminal/term-screen.c @@ -549,7 +549,6 @@ static int screen_LF(term_screen *screen, const term_seq *seq); static int screen_GRAPHIC(term_screen *screen, const term_seq *seq) { term_char_t ch = TERM_CHAR_NULL; - uint32_t c; if (screen->state.cursor_x + 1 == screen->page->width && screen->flags & TERM_FLAG_PENDING_WRAP @@ -560,8 +559,7 @@ static int screen_GRAPHIC(term_screen *screen, const term_seq *seq) { screen_cursor_clear_wrap(screen); - c = screen_map(screen, seq->terminator); - ch = term_char_merge(ch, screen_map(screen, c)); + ch = term_char_merge(ch, screen_map(screen, seq->terminator)); term_page_write(screen->page, screen->state.cursor_x, screen->state.cursor_y, ch, 1, &screen->state.attr, screen->age, false); if (screen->state.cursor_x + 1 == screen->page->width)