Mercurial > vim
changeset 3180:28480c9006e6 v7.3.360
updated for version 7.3.360
Problem: Interrupting the load of an autoload function may cause a crash.
Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 30 Nov 2011 15:19:28 +0100 |
parents | f065a14d292b |
children | 33de718326f4 |
files | src/eval.c src/version.c |
diffstat | 2 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -19589,9 +19589,14 @@ find_var_in_ht(ht, varname, writing) * worked find the variable again. Don't auto-load a script if it was * loaded already, otherwise it would be loaded every time when * checking if a function name is a Funcref variable. */ - if (ht == &globvarht && !writing - && script_autoload(varname, FALSE) && !aborting()) + if (ht == &globvarht && !writing) + { + /* Note: script_autoload() may make "hi" invalid. It must either + * be obtained again or not used. */ + if (!script_autoload(varname, FALSE) || aborting()) + return NULL; hi = hash_find(ht, varname); + } if (HASHITEM_EMPTY(hi)) return NULL; }