diff options
author | bfredl <bjorn.linse@gmail.com> | 2024-02-18 18:32:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-18 18:32:46 +0100 |
commit | 1c520053a9bf89004f1e5af9b31d3239341d7488 (patch) | |
tree | 902bafe780724ed393af753bbf4c5c346fbb84a9 /src/nvim/msgpack_rpc/unpacker.c | |
parent | 93c911e52feadff72003f7e78257c00c3bbf1570 (diff) | |
parent | bbf6d4a4bc44c8e61f807d23cc4ff2c2683e1ef4 (diff) | |
download | rneovim-1c520053a9bf89004f1e5af9b31d3239341d7488.tar.gz rneovim-1c520053a9bf89004f1e5af9b31d3239341d7488.tar.bz2 rneovim-1c520053a9bf89004f1e5af9b31d3239341d7488.zip |
Merge pull request #27520 from bfredl/metaarena
refactor(api): use arena for metadata; msgpack_rpc_to_object delenda est
Diffstat (limited to 'src/nvim/msgpack_rpc/unpacker.c')
-rw-r--r-- | src/nvim/msgpack_rpc/unpacker.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/nvim/msgpack_rpc/unpacker.c b/src/nvim/msgpack_rpc/unpacker.c index 38263381bf..6bc138f65a 100644 --- a/src/nvim/msgpack_rpc/unpacker.c +++ b/src/nvim/msgpack_rpc/unpacker.c @@ -18,15 +18,18 @@ # include "msgpack_rpc/unpacker.c.generated.h" #endif -Object unpack(const char *data, size_t size, Error *err) +Object unpack(const char *data, size_t size, Arena *arena, Error *err) { Unpacker unpacker; mpack_parser_init(&unpacker.parser, 0); unpacker.parser.data.p = &unpacker; + unpacker.arena = *arena; int result = mpack_parse(&unpacker.parser, &data, &size, api_parse_enter, api_parse_exit); + *arena = unpacker.arena; + if (result == MPACK_NOMEM) { api_set_error(err, kErrorTypeException, "object was too deep to unpack"); } else if (result == MPACK_EOF) { |