Mercurial > vim
changeset 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 | bb806540f72e |
children | 3abc660b43f4 |
files | src/if_lua.c src/version.c |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
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);