patch 8.2.3294: Lua: memory leak when adding dict item fails
Problem: Lua: memory leak when adding dict item fails.
Solution: Free the typval and the dict item.
diff --git a/src/if_lua.c b/src/if_lua.c
index 144fcbe..6ac3951 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1859,12 +1859,20 @@
// 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);