diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-02-28 14:59:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-28 14:59:52 +0100 |
commit | 6732cd9e57bf39d1a0f5c4fa08fa54c1561f2d2f (patch) | |
tree | 24e9b974d997a1f0d35f82fcd075dd99cb7be2e9 | |
parent | cca08d0f3b8168e967b2fc1405584582dd7a1289 (diff) | |
parent | f6cc604af2a4d95ec9bcaa5bee705cec2e06d541 (diff) | |
download | rneovim-6732cd9e57bf39d1a0f5c4fa08fa54c1561f2d2f.tar.gz rneovim-6732cd9e57bf39d1a0f5c4fa08fa54c1561f2d2f.tar.bz2 rneovim-6732cd9e57bf39d1a0f5c4fa08fa54c1561f2d2f.zip |
Merge pull request #17529 from seandewar/api-string-oopsie
fix(api): convert blob to NUL-terminated API string
-rw-r--r-- | src/nvim/api/private/converter.c | 2 | ||||
-rw-r--r-- | test/functional/lua/api_spec.lua | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/nvim/api/private/converter.c b/src/nvim/api/private/converter.c index 3d4ff202fe..49e3cf7df7 100644 --- a/src/nvim/api/private/converter.c +++ b/src/nvim/api/private/converter.c @@ -57,7 +57,7 @@ typedef struct { const size_t len_ = (size_t)(len); \ const blob_T *const blob_ = (blob); \ kvi_push(edata->stack, STRING_OBJ(((String) { \ - .data = len_ != 0 ? xmemdup(blob_->bv_ga.ga_data, len_) : NULL, \ + .data = len_ != 0 ? xmemdupz(blob_->bv_ga.ga_data, len_) : xstrdup(""), \ .size = len_ \ }))); \ } while (0) diff --git a/test/functional/lua/api_spec.lua b/test/functional/lua/api_spec.lua index cb37fb9a1c..f173a15d32 100644 --- a/test/functional/lua/api_spec.lua +++ b/test/functional/lua/api_spec.lua @@ -102,6 +102,13 @@ describe('luaeval(vim.api.…)', function() eq(false, funcs.luaeval('vim.api.nvim__id(false)')) eq(NIL, funcs.luaeval('vim.api.nvim__id(nil)')) + -- API strings from Blobs can work as NUL-terminated C strings + eq('Vim(call):E5555: API call: Vim:E15: Invalid expression: ', + exc_exec('call nvim_eval(v:_null_blob)')) + eq('Vim(call):E5555: API call: Vim:E15: Invalid expression: ', + exc_exec('call nvim_eval(0z)')) + eq(1, eval('nvim_eval(0z31)')) + eq(0, eval([[type(luaeval('vim.api.nvim__id(1)'))]])) eq(1, eval([[type(luaeval('vim.api.nvim__id("1")'))]])) eq(3, eval([[type(luaeval('vim.api.nvim__id({1})'))]])) |