From db2d14d9ed9f9eb4aba4bfe5c08dfaa923ac147c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 5 Apr 2017 09:07:55 +0530 Subject: [PATCH] Fix backslashes in OSC codes not being parsed correctly Fixes #61 --- kitty/parser.c | 10 +++++----- kitty_tests/parser.py | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kitty/parser.c b/kitty/parser.c index dbf03ae2c..62799392f 100644 --- a/kitty/parser.c +++ b/kitty/parser.c @@ -519,16 +519,16 @@ accumulate_osc(Screen *screen, uint32_t ch, PyObject DUMP_UNUSED *dump_callback) switch(ch) { case ST: return true; - case ESC_ST: - if (screen->parser_buf_pos > 0 && screen->parser_buf[screen->parser_buf_pos - 1] == ESC) { - screen->parser_buf_pos--; - return true; - } case BEL: return true; case NUL: case DEL: break; + case ESC_ST: + if (screen->parser_buf_pos > 0 && screen->parser_buf[screen->parser_buf_pos - 1] == ESC) { + screen->parser_buf_pos--; + return true; + } default: if (screen->parser_buf_pos >= PARSER_BUF_SZ - 1) { REPORT_ERROR("OSC sequence too long, truncating."); diff --git a/kitty_tests/parser.py b/kitty_tests/parser.py index 01577132f..472b78193 100644 --- a/kitty_tests/parser.py +++ b/kitty_tests/parser.py @@ -156,9 +156,9 @@ class TestParser(BaseTest): s = self.create_screen() pb = partial(self.parse_bytes_dump, s) c = s.callbacks - pb('a\033]2;xyz\x9cbcde', 'a', ('set_title', 'xyz'), 'bcde') + pb('a\033]2;x\\ryz\x9cbcde', 'a', ('set_title', 'x\\ryz'), 'bcde') self.ae(str(s.line(0)), 'abcde') - self.ae(c.titlebuf, 'xyz') + self.ae(c.titlebuf, 'x\\ryz') c.clear() pb('\033]\x07', ('set_title', ''), ('set_icon', '')) self.ae(c.titlebuf, ''), self.ae(c.iconbuf, '')