From 532cc44e66da8717356990617942f2148d09e61b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 25 Dec 2023 16:54:14 +0530 Subject: [PATCH] Ensure screen is always set when calling parse_sgr --- kitty/vt-parser.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kitty/vt-parser.c b/kitty/vt-parser.c index 795ee7788..40575adc2 100644 --- a/kitty/vt-parser.c +++ b/kitty/vt-parser.c @@ -979,8 +979,10 @@ parse_sgr(Screen *screen, const uint8_t *buf, unsigned int num, const char *repo _buf[num++] = 'm'; } _buf[num] = 0; - if (!csi_parse_loop((PS*)screen->vt_parser->state, &csi, _buf, &pos, num, 0)) return false; - return _parse_sgr((PS*)screen->vt_parser->state, &csi); + PS *state = (PS*)screen->vt_parser->state; + state->screen = screen; + if (!csi_parse_loop(state, &csi, _buf, &pos, num, 0)) return false; + return _parse_sgr(state, &csi); } #endif @@ -1538,7 +1540,7 @@ run_worker(void *p, ParseData *pd, bool flush) { if (flush || pd->time_since_new_input >= OPT(input_delay) || self->read.sz + 16 * 1024 > BUF_SZ) { pd->input_read = true; self->dump_callback = pd->dump_callback; self->now = pd->now; - self->screen = p; + self->screen = screen; do { end_with_lock; { do_parse_vt(self);