Mercurial > vim
diff src/vim9execute.c @ 20189:63cc54100ae4 v8.2.0650
patch 8.2.0650: Vim9: script function can be deleted
Commit: https://github.com/vim/vim/commit/4c17ad94ecb0a0fb26d6fface2614bc5172dea18
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 27 22:47:51 2020 +0200
patch 8.2.0650: Vim9: script function can be deleted
Problem: Vim9: script function can be deleted.
Solution: Disallow deleting script function. Delete functions when sourcing
a script again.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 27 Apr 2020 23:00:03 +0200 |
parents | 1d84eaed0ec8 |
children | eaaee0dfa435 |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -400,7 +400,7 @@ call_by_name(char_u *name, int argcount, return call_bfunc(func_idx, argcount, ectx); } - ufunc = find_func(name, NULL); + ufunc = find_func(name, FALSE, NULL); if (ufunc != NULL) return call_ufunc(ufunc, argcount, ectx, iptr); @@ -1944,8 +1944,9 @@ ex_disassemble(exarg_T *eap) int current; int line_idx = 0; int prev_current = 0; + int is_global = FALSE; - fname = trans_function_name(&arg, FALSE, + fname = trans_function_name(&arg, &is_global, FALSE, TFN_INT | TFN_QUIET | TFN_NO_AUTOLOAD | TFN_NO_DEREF, NULL, NULL); if (fname == NULL) { @@ -1953,14 +1954,14 @@ ex_disassemble(exarg_T *eap) return; } - ufunc = find_func(fname, NULL); + ufunc = find_func(fname, is_global, NULL); if (ufunc == NULL) { char_u *p = untrans_function_name(fname); if (p != NULL) // Try again without making it script-local. - ufunc = find_func(p, NULL); + ufunc = find_func(p, FALSE, NULL); } vim_free(fname); if (ufunc == NULL)