diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-08-05 16:47:08 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-08-05 16:47:08 +0200 |
commit | 1b6acf02b7e685ecb87ccba52c91835a7519073e (patch) | |
tree | 7fb86c549ad2794f1a08aedec9080ed74f3b9536 /src/if_lua.c | |
parent | 6a230c6b32695393785ae64b440ce5f023a22382 (diff) | |
download | vim-git-1b6acf02b7e685ecb87ccba52c91835a7519073e.tar.gz |
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.c | 10 |
1 files changed, 9 insertions, 1 deletions
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); |