1
0
forked from aniani/vim

patch 8.1.0888: the a: dict is not immutable as documented

Problem:    The a: dict is not immutable as documented.
Solution:   Make the a:dict immutable, add a test. (Ozaki Kiichi, Yasuhiro
            Matsumoto, closes #3929)
This commit is contained in:
Bram Moolenaar
2019-02-10 22:14:27 +01:00
parent 9474716d39
commit 31b816042f
5 changed files with 210 additions and 9 deletions

View File

@@ -2092,14 +2092,15 @@ get_lval(
if (lp->ll_di == NULL)
{
/* Can't add "v:" variable. */
if (lp->ll_dict == &vimvardict)
// Can't add "v:" or "a:" variable.
if (lp->ll_dict == &vimvardict
|| &lp->ll_dict->dv_hashtab == get_funccal_args_ht())
{
semsg(_(e_illvar), name);
return NULL;
}
/* Key does not exist in dict: may need to add it. */
// Key does not exist in dict: may need to add it.
if (*p == '[' || *p == '.' || unlet)
{
if (!quiet)
@@ -7919,14 +7920,14 @@ set_var(
}
else /* add a new variable */
{
/* Can't add "v:" variable. */
if (ht == &vimvarht)
// Can't add "v:" or "a:" variable.
if (ht == &vimvarht || ht == get_funccal_args_ht())
{
semsg(_(e_illvar), name);
return;
}
/* Make sure the variable name is valid. */
// Make sure the variable name is valid.
if (!valid_varname(varname))
return;