diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2024-05-24 19:18:11 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2024-05-24 19:18:11 +0000 |
commit | ff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch) | |
tree | 729bbcb92231538fa61dab6c3d890b025484b7f5 /src/nvim/msgpack_rpc/unpacker.c | |
parent | 376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff) | |
parent | 28c04948a1c887a1cc0cb64de79fa32631700466 (diff) | |
download | rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2 rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip |
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'src/nvim/msgpack_rpc/unpacker.c')
-rw-r--r-- | src/nvim/msgpack_rpc/unpacker.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/nvim/msgpack_rpc/unpacker.c b/src/nvim/msgpack_rpc/unpacker.c index dbb30b0c9a..28d27e8268 100644 --- a/src/nvim/msgpack_rpc/unpacker.c +++ b/src/nvim/msgpack_rpc/unpacker.c @@ -187,6 +187,8 @@ void unpacker_init(Unpacker *p) p->unpack_error = ERROR_INIT; p->arena = (Arena)ARENA_EMPTY; + + p->has_grid_line_event = false; } void unpacker_teardown(Unpacker *p) @@ -303,6 +305,7 @@ error: bool unpacker_advance(Unpacker *p) { assert(p->state >= 0); + p->has_grid_line_event = false; if (p->state == 0) { if (!unpacker_parse_header(p)) { return false; @@ -323,6 +326,7 @@ bool unpacker_advance(Unpacker *p) if (p->state == 16) { // grid_line event already unpacked + p->has_grid_line_event = true; goto done; } else { assert(p->state == 12); @@ -378,7 +382,7 @@ bool unpacker_parse_redraw(Unpacker *p) const char *data = p->read_ptr; size_t size = p->read_size; - GridLineEvent *g = p->grid_line_event; + GridLineEvent *g = &p->grid_line_event; #define NEXT_TYPE(tok, typ) \ result = mpack_rtoken(&data, &size, &tok); \ @@ -420,16 +424,10 @@ bool unpacker_parse_redraw(Unpacker *p) p->read_size = size; if (p->ui_handler.fn != ui_client_event_grid_line) { p->state = 12; - if (p->grid_line_event) { - arena_mem_free(arena_finish(&p->arena)); - p->grid_line_event = NULL; - } return true; } else { p->state = 14; p->arena = (Arena)ARENA_EMPTY; - p->grid_line_event = arena_alloc(&p->arena, sizeof *p->grid_line_event, true); - g = p->grid_line_event; } FALLTHROUGH; |