diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-08-24 15:22:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-24 15:22:30 +0200 |
commit | f1ea126a6eb1d9cae53eae3fedbfa51f90ee97b1 (patch) | |
tree | b0c3c27869110cc51cda2f18d64ef9608c956481 /src/nvim/msgpack_rpc/unpacker.c | |
parent | f91b1885ddeaf971e17afe49b80f1b1412ecc8a2 (diff) | |
parent | 7784dc9e0d90284b0d9c9cf0833c27d4de22b7f4 (diff) | |
download | rneovim-f1ea126a6eb1d9cae53eae3fedbfa51f90ee97b1.tar.gz rneovim-f1ea126a6eb1d9cae53eae3fedbfa51f90ee97b1.tar.bz2 rneovim-f1ea126a6eb1d9cae53eae3fedbfa51f90ee97b1.zip |
Merge pull request #19906 from bfredl/bigstage
perf(api): allow to use an arena for return values
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 c8e9fdd4c3..24480835a1 100644 --- a/src/nvim/msgpack_rpc/unpacker.c +++ b/src/nvim/msgpack_rpc/unpacker.c @@ -181,13 +181,11 @@ void unpacker_init(Unpacker *p) p->unpack_error = (Error)ERROR_INIT; p->arena = (Arena)ARENA_EMPTY; - p->reuse_blk = NULL; } void unpacker_teardown(Unpacker *p) { - arena_mem_free(p->reuse_blk, NULL); - arena_mem_free(arena_finish(&p->arena), NULL); + arena_mem_free(arena_finish(&p->arena)); } bool unpacker_parse_header(Unpacker *p) @@ -308,7 +306,7 @@ bool unpacker_advance(Unpacker *p) p->state = 10; } else { p->state = p->type == kMessageTypeResponse ? 1 : 2; - arena_start(&p->arena, &p->reuse_blk); + p->arena = (Arena)ARENA_EMPTY; } } @@ -322,7 +320,7 @@ bool unpacker_advance(Unpacker *p) goto done; } else { // unpack other ui events using mpack_parse() - arena_start(&p->arena, &p->reuse_blk); + p->arena = (Arena)ARENA_EMPTY; } } @@ -416,13 +414,13 @@ redo: 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->reuse_blk); + arena_mem_free(arena_finish(&p->arena)); p->grid_line_event = NULL; } return true; } else { p->state = 13; - arena_start(&p->arena, &p->reuse_blk); + p->arena = (Arena)ARENA_EMPTY; p->grid_line_event = arena_alloc(&p->arena, sizeof *p->grid_line_event, true); g = p->grid_line_event; } |