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;
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3673,
+/**/
     3672,
 /**/
     3671,