0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 9.0.0949: crash when unletting a variable while listing variables

Problem:    Crash when unletting a variable while listing variables.
Solution:   Disallow changing a hashtable while going over the entries.
            (closes #11435)
This commit is contained in:
Bram Moolenaar
2022-11-25 16:31:51 +00:00
parent c1cf4c9107
commit ef2c325f5e
21 changed files with 143 additions and 68 deletions

View File

@@ -942,7 +942,8 @@ update_vim9_script_var(
if (HASHITEM_EMPTY(hi))
// new variable name
hash_add(&si->sn_all_vars.dv_hashtab, newsav->sav_key);
hash_add(&si->sn_all_vars.dv_hashtab, newsav->sav_key,
"add variable");
else if (sav != NULL)
// existing name in a new block, append to the list
sav->sav_next = newsav;
@@ -1033,7 +1034,7 @@ hide_script_var(scriptitem_T *si, int idx, int func_defined)
else
{
if (sav_prev == NULL)
hash_remove(all_ht, all_hi);
hash_remove(all_ht, all_hi, "hide variable");
else
sav_prev->sav_next = sav->sav_next;
sv->sv_name = NULL;