summaryrefslogtreecommitdiffstats
path: root/src/if_lua.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-08-05 16:47:08 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-05 16:47:08 +0200
commit1b6acf02b7e685ecb87ccba52c91835a7519073e (patch)
tree7fb86c549ad2794f1a08aedec9080ed74f3b9536 /src/if_lua.c
parent6a230c6b32695393785ae64b440ce5f023a22382 (diff)
patch 8.2.3294: Lua: memory leak when adding dict item failsv8.2.3294
Problem: Lua: memory leak when adding dict item fails. Solution: Free the typval and the dict item.
Diffstat (limited to 'src/if_lua.c')
-rw-r--r--src/if_lua.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/if_lua.c b/src/if_lua.c
index 144fcbea5f..6ac3951122 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1859,12 +1859,20 @@ luaV_setvar(lua_State *L)
// Need to create an entry
di = dictitem_alloc((char_u *)name);
if (di == NULL)
+ {
+ clear_tv(&tv);
return 0;
+ }
// Update the value
copy_tv(&tv, &di->di_tv);
if (dict_add(dict, di) == FAIL)
+ {
+ dictitem_free(di);
+ clear_tv(&tv);
return luaL_error(L, "Couldn't add to dictionary");
- } else
+ }
+ }
+ else
{
// Clear the old value
clear_tv(&di->di_tv);