neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit fdaf6bc5573f578d100321dfc084d513884fd73a
parent e9b9a86cd5a555943b87f0ba40c4527561c3c124
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat, 11 Nov 2023 13:10:26 +0800

fix(context): don't leak memory on multiple invalid objects (#25979)


Diffstat:
Msrc/nvim/context.c | 2+-
Mtest/functional/api/vim_spec.lua | 2+-
Mtest/functional/vimscript/ctx_functions_spec.lua | 2+-
3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/nvim/context.c b/src/nvim/context.c @@ -380,7 +380,7 @@ int ctx_from_dict(Dictionary dict, Context *ctx, Error *err) assert(ctx != NULL); int types = 0; - for (size_t i = 0; i < dict.size; i++) { + for (size_t i = 0; i < dict.size && !ERROR_SET(err); i++) { KeyValuePair item = dict.items[i]; if (item.value.type != kObjectTypeArray) { continue; diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua @@ -1982,7 +1982,7 @@ describe('API', function() it('errors when context dictionary is invalid', function() eq('E474: Failed to convert list to msgpack string buffer', - pcall_err(nvim, 'load_context', { regs = { {} } })) + pcall_err(nvim, 'load_context', { regs = { {} }, jumps = { {} } })) eq("Empty dictionary keys aren't allowed", pcall_err(nvim, 'load_context', { regs = { { [''] = '' } } })) end) diff --git a/test/functional/vimscript/ctx_functions_spec.lua b/test/functional/vimscript/ctx_functions_spec.lua @@ -378,7 +378,7 @@ describe('context functions', function() it('errors when context dictionary is invalid', function() call('ctxpush') eq('Vim:E474: Failed to convert list to msgpack string buffer', - pcall_err(call, 'ctxset', { regs = { {} } })) + pcall_err(call, 'ctxset', { regs = { {} }, jumps = { {} } })) end) it('sets context dictionary at index in context stack', function()