From 1b6acf02b7e685ecb87ccba52c91835a7519073e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 5 Aug 2021 16:47:08 +0200 Subject: 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. --- src/if_lua.c | 10 +++++++++- src/version.c | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/if_lua.c b/src/if_lua.c index 144fcbea5..6ac395112 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); diff --git a/src/version.c b/src/version.c index 2db7988ce..c2d3998ad 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3294, /**/ 3293, /**/ -- cgit v1.2.1