* 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;
}