Mercurial > vim
changeset 26284:ae947ebb4038 v8.2.3673
patch 8.2.3673: crash when allocating signal stack fails
Commit: https://github.com/vim/vim/commit/0bd8d0563853ab821a018fb9cdd85f674684fe57
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Nov 25 13:39:28 2021 +0000
patch 8.2.3673: crash when allocating signal stack fails
Problem: Crash when allocating signal stack fails.
Solution: Only using sourcing info when available. (closes https://github.com/vim/vim/issues/9215)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 25 Nov 2021 14:45:03 +0100 |
parents | 3b297148a7c5 |
children | 4bfa37787ac9 |
files | src/globals.h src/message.c src/version.c |
diffstat | 3 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/globals.h +++ b/src/globals.h @@ -288,6 +288,7 @@ EXTERN int msg_no_more INIT(= FALSE); / * Current context is at ga_len - 1. */ EXTERN garray_T exestack INIT5(0, 0, sizeof(estack_T), 50, NULL); +#define HAVE_SOURCING_INFO (exestack.ga_data != NULL && exestack.ga_len > 0) // name of error message source #define SOURCING_NAME (((estack_T *)exestack.ga_data)[exestack.ga_len - 1].es_name) // line number in the message source or zero
--- a/src/message.c +++ b/src/message.c @@ -446,7 +446,7 @@ reset_last_sourcing(void) static int other_sourcing_name(void) { - if (SOURCING_NAME != NULL) + if (HAVE_SOURCING_INFO && SOURCING_NAME != NULL) { if (last_sourcing_name != NULL) return STRCMP(SOURCING_NAME, last_sourcing_name) != 0; @@ -465,7 +465,7 @@ get_emsg_source(void) { char_u *Buf, *p; - if (SOURCING_NAME != NULL && other_sourcing_name()) + if (HAVE_SOURCING_INFO && SOURCING_NAME != NULL && other_sourcing_name()) { char_u *sname = estack_sfile(ESTACK_NONE); char_u *tofree = sname;