diff src/if_lua.c @ 25515:d84f6784c27c v8.2.3294

patch 8.2.3294: Lua: memory leak when adding dict item fails Commit: https://github.com/vim/vim/commit/1b6acf02b7e685ecb87ccba52c91835a7519073e Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 5 16:47:08 2021 +0200 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.
author Bram Moolenaar <Bram@vim.org>
date Thu, 05 Aug 2021 17:00:03 +0200
parents 7ed54019fbb8
children d5e9c05b4811
line wrap: on
line diff
--- 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);