diff options
author | Jakub Łuczyński <doubleloop@o2.pl> | 2020-02-10 11:17:22 +0100 |
---|---|---|
committer | Jakub Łuczyński <doubleloop@o2.pl> | 2020-02-13 14:11:35 +0100 |
commit | bae1738bcec101984f8f54169191f5c0f17ab297 (patch) | |
tree | f22e46c9f0858f4767d39cddca1b920ab86d58c9 /src | |
parent | e50b545676822eefa3ab6b00b4222cc34c5f4633 (diff) | |
download | rneovim-bae1738bcec101984f8f54169191f5c0f17ab297.tar.gz rneovim-bae1738bcec101984f8f54169191f5c0f17ab297.tar.bz2 rneovim-bae1738bcec101984f8f54169191f5c0f17ab297.zip |
fix: find_var_ht_dict
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index c3ac214d5f..bd223c7b78 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -8541,6 +8541,7 @@ static hashtab_T *find_var_ht_dict(const char *name, const size_t name_len, const char **varname, dict_T **d) { hashitem_T *hi; + funccall_T *funccal = get_funccal(); *d = NULL; if (name_len == 0) { @@ -8560,16 +8561,16 @@ static hashtab_T *find_var_ht_dict(const char *name, const size_t name_len, return &compat_hashtab; } - if (current_funccal == NULL) { + if (funccal == NULL) { // global variable *d = &globvardict; - } else { - *d = &get_funccal()->l_vars; // l: variable + } else { // l: variable + *d = &funccal->l_vars; } goto end; } *varname = name + 2; - if (*name == 'g') { // global variable + if (*name == 'g') { // global variable *d = &globvardict; } else if (name_len > 2 && (memchr(name + 2, ':', name_len - 2) != NULL @@ -8586,10 +8587,10 @@ static hashtab_T *find_var_ht_dict(const char *name, const size_t name_len, *d = curtab->tp_vars; } else if (*name == 'v') { // v: variable *d = &vimvardict; - } else if (*name == 'a' && current_funccal != NULL) { // function argument - *d = &get_funccal()->l_avars; - } else if (*name == 'l' && current_funccal != NULL) { // local variable - *d = &get_funccal()->l_vars; + } else if (*name == 'a' && funccal != NULL) { // function argument + *d = &funccal->l_avars; + } else if (*name == 'l' && funccal != NULL) { // local variable + *d = &funccal->l_vars; } else if (*name == 's' // script variable && current_sctx.sc_sid > 0 && current_sctx.sc_sid <= ga_scripts.ga_len) { |