Mercurial > vim
diff src/vim9execute.c @ 27565:0b12dd90a5d6 v8.2.4309
patch 8.2.4309: Vim9: crash when using a partial in the wrong context
Commit: https://github.com/vim/vim/commit/fe1bfc9b267fffedac6b5224d7aa6cc5d9d15f64
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 6 13:55:03 2022 +0000
patch 8.2.4309: Vim9: crash when using a partial in the wrong context
Problem: Vim9: crash when using a partial in the wrong context.
Solution: Don't use an NULL outer pointer. (closes https://github.com/vim/vim/issues/9706)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 06 Feb 2022 15:00:03 +0100 |
parents | f00a7a2bee21 |
children | a31dd0a3cb39 |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1694,7 +1694,7 @@ handle_debug(isn_T *iptr, ectx_T *ectx) } /* - * Store a value in a list or dict variable. + * Store a value in a list, dict or blob variable. * Returns OK, FAIL or NOTDONE (uncatchable error). */ static int @@ -5081,12 +5081,16 @@ call_def_function( goto failed_early; if (partial != NULL) { - if (partial->pt_outer.out_stack == NULL && current_ectx != NULL) + if (partial->pt_outer.out_stack == NULL) { - if (current_ectx->ec_outer_ref != NULL - && current_ectx->ec_outer_ref->or_outer != NULL) - ectx.ec_outer_ref->or_outer = + if (current_ectx != NULL) + { + if (current_ectx->ec_outer_ref != NULL + && current_ectx->ec_outer_ref->or_outer != NULL) + ectx.ec_outer_ref->or_outer = current_ectx->ec_outer_ref->or_outer; + } + // Should there be an error here? } else {