0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.0.0344: unlet command leaks memory

Problem:    Unlet command leaks memory. (Nikolai Pavlov)
Solution:   Free the memory on error. (closes #1497)
This commit is contained in:
Bram Moolenaar
2017-02-20 23:07:05 +01:00
parent e7877fe0de
commit 49439c4cdf
3 changed files with 9 additions and 0 deletions

View File

@@ -2079,7 +2079,10 @@ get_lval(
} }
/* existing variable, need to check if it can be changed */ /* existing variable, need to check if it can be changed */
else if (var_check_ro(lp->ll_di->di_flags, name, FALSE)) else if (var_check_ro(lp->ll_di->di_flags, name, FALSE))
{
clear_tv(&var1);
return NULL; return NULL;
}
if (len == -1) if (len == -1)
clear_tv(&var1); clear_tv(&var1);

View File

@@ -17,3 +17,7 @@ func Test_not_existing()
unlet! does_not_exist unlet! does_not_exist
call assert_fails('unlet does_not_exist', 'E108:') call assert_fails('unlet does_not_exist', 'E108:')
endfunc endfunc
func Test_unlet_fails()
call assert_fails('unlet v:["count"]', 'E46:')
endfunc

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
344,
/**/ /**/
343, 343,
/**/ /**/