fix(mappings): fix double-free when unmapping simplifiable Lua mapping

This commit is contained in:
zeertzjq
2022-04-29 17:30:45 +08:00
parent 35a7b0f9b9
commit c8e45366b9
2 changed files with 48 additions and 2 deletions

View File

@@ -3299,7 +3299,9 @@ int buf_do_map(int maptype, MapArguments *args, int mode, bool is_abbrev, buf_T
XFREE_CLEAR(mp->m_str);
XFREE_CLEAR(mp->m_orig_str);
XFREE_CLEAR(mp->m_desc);
NLUA_CLEAR_REF(mp->m_luaref);
if (!mp->m_simplified) {
NLUA_CLEAR_REF(mp->m_luaref);
}
mp->m_str = vim_strsave(rhs);
mp->m_orig_str = vim_strsave(orig_rhs);
@@ -3500,7 +3502,9 @@ static void mapblock_free(mapblock_T **mpp)
mp = *mpp;
xfree(mp->m_keys);
NLUA_CLEAR_REF(mp->m_luaref);
if (!mp->m_simplified) {
NLUA_CLEAR_REF(mp->m_luaref);
}
XFREE_CLEAR(mp->m_str);
XFREE_CLEAR(mp->m_orig_str);
XFREE_CLEAR(mp->m_desc);