diff options
-rw-r--r-- | src/nvim/api/private/helpers.c | 1 | ||||
-rw-r--r-- | test/functional/api/vim_spec.lua | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 67ff77ebac..2a01f83688 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -146,6 +146,7 @@ Object dict_set_value(dict_T *dict, String key, Object value, Error *err) dict_add(dict, di); } else { // Return the old value + rv = vim_to_object(&di->di_tv); clear_tv(&di->di_tv); } diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua index cbdb1980f0..c158c26341 100644 --- a/test/functional/api/vim_spec.lua +++ b/test/functional/api/vim_spec.lua @@ -62,6 +62,13 @@ describe('vim_* functions', function() eq({1, 2, {['3'] = 1}}, nvim('eval', 'g:lua')) end) + it('set_var returns the old value', function() + local val1 = {1, 2, {['3'] = 1}} + local val2 = {4, 7} + eq(nil, nvim('set_var', 'lua', val1)) + eq(val1, nvim('set_var', 'lua', val2)) + end) + it('truncates values with NULs in them', function() nvim('set_var', 'xxx', 'ab\0cd') eq('ab', nvim('get_var', 'xxx')) |