From 9ecf79fa844b517e7f3a1057ed27e23d43ddc9ca Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 29 Oct 2023 22:32:42 +0530 Subject: [PATCH] Fix parse worker --- kitty/vt-parser.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/kitty/vt-parser.c b/kitty/vt-parser.c index 77285f882..715082c86 100644 --- a/kitty/vt-parser.c +++ b/kitty/vt-parser.c @@ -1589,8 +1589,15 @@ do_parse_vt(PS *self) { // Boilerplate {{{ #define setup_worker \ - self->input_data = screen->read_buf; self->input_sz = screen->read_buf_sz; self->dump_callback = dump_callback; \ - self->now = now; self->input_pos = 0; self->screen = screen; + +static void +run_worker(Screen *screen, PyObject *dump_callback, monotonic_t now) { + PS *self = (PS*)screen->vt_parser->state; + self->input_data = screen->read_buf; self->input_sz = screen->read_buf_sz; self->input_pos = 0; + self->dump_callback = dump_callback; self->now = now; self->screen = screen; + do_parse_vt(self); + screen->read_buf_sz = 0; +} #ifdef DUMP_COMMANDS void @@ -1599,11 +1606,7 @@ parse_vt_dump(Parser *p) { } void -parse_worker_dump(Screen *screen, PyObject *dump_callback, monotonic_t now) { - PS *self = (PS*)screen->vt_parser->state; - setup_worker; - do_parse_vt(self); -} +parse_worker_dump(Screen *screen, PyObject *dump_callback, monotonic_t now) { run_worker(screen, dump_callback, now); } #else static void parse_vt(Parser *p) { @@ -1612,11 +1615,7 @@ parse_vt(Parser *p) { extern void parse_vt_dump(Parser *p); void -parse_worker(Screen *screen, PyObject *dump_callback, monotonic_t now) { - PS *self = (PS*)screen->vt_parser->state; - setup_worker; - do_parse_vt(self); -} +parse_worker(Screen *screen, PyObject *dump_callback, monotonic_t now) { run_worker(screen, dump_callback, now); } #endif #ifndef DUMP_COMMANDS