summaryrefslogtreecommitdiff
path: root/src/libsystemd-terminal
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2014-11-30 14:37:12 +0100
committerDavid Herrmann <dh.herrmann@gmail.com>2014-11-30 14:37:57 +0100
commit5eb9e762eab5faa1bc995a39ebbb8fc694755c3e (patch)
tree47c5278a97429f262520f417d010cea1f970f260 /src/libsystemd-terminal
parentd0a2e1c364320b862a6aae099afa106ea59bb84c (diff)
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.
Diffstat (limited to 'src/libsystemd-terminal')
-rw-r--r--src/libsystemd-terminal/term-screen.c4
1 files changed, 1 insertions, 3 deletions
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)