Mercurial > vim
diff src/vim9compile.c @ 28097:632a84e2ce92 v8.2.4573
patch 8.2.4573: a nested function is compiled for debugging without context
Commit: https://github.com/vim/vim/commit/96923b7a14839e7505b194ab76e1f15bb88fa7ed
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Mar 15 15:57:04 2022 +0000
patch 8.2.4573: a nested function is compiled for debugging without context
Problem: A nested function (closure) is compiled for debugging without
context.
Solution: Check if a nested function is marked for debugging before
compiling it. Give an error when trying to compile a closure
without its context. (closes #9951)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 15 Mar 2022 17:00:04 +0100 |
parents | b47698ee4a14 |
children | 3bc0a639dfb0 |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -913,6 +913,7 @@ compile_nested_function(exarg_T *eap, cc } } + update_has_breakpoint(ufunc); compile_type = COMPILE_TYPE(ufunc); #ifdef FEAT_PROFILE // If the outer function is profiled, also compile the nested function for @@ -2579,6 +2580,13 @@ compile_def_function( new_def_function = TRUE; } + if ((ufunc->uf_flags & FC_CLOSURE) && outer_cctx == NULL) + { + semsg(_(e_compiling_closure_without_context_str), + printable_func_name(ufunc)); + return FAIL; + } + ufunc->uf_def_status = UF_COMPILING; CLEAR_FIELD(cctx);