1
0
forked from aniani/vim

patch 8.2.0452: channel_parse_messages() fails when called recursively

Problem:    channel_parse_messages() fails when called recursively.
Solution:   Return for a recursive call. (closes #5835)
This commit is contained in:
Bram Moolenaar
2020-03-26 16:03:45 +01:00
parent 82e743c5b3
commit a9c3a30891
2 changed files with 13 additions and 2 deletions

View File

@@ -4428,14 +4428,22 @@ channel_parse_messages(void)
int ret = FALSE; int ret = FALSE;
int r; int r;
ch_part_T part = PART_SOCK; ch_part_T part = PART_SOCK;
static int recursive = FALSE;
#ifdef ELAPSED_FUNC #ifdef ELAPSED_FUNC
elapsed_T start_tv; elapsed_T start_tv;
ELAPSED_INIT(start_tv);
#endif #endif
// The code below may invoke callbacks, which might call us back.
// That doesn't work well, just return without doing anything.
if (recursive)
return FALSE;
recursive = TRUE;
++safe_to_invoke_callback; ++safe_to_invoke_callback;
#ifdef ELAPSED_FUNC
ELAPSED_INIT(start_tv);
#endif
// Only do this message when another message was given, otherwise we get // Only do this message when another message was given, otherwise we get
// lots of them. // lots of them.
if ((did_repeated_msg & REPEATED_MSG_LOOKING) == 0) if ((did_repeated_msg & REPEATED_MSG_LOOKING) == 0)
@@ -4513,6 +4521,7 @@ channel_parse_messages(void)
} }
--safe_to_invoke_callback; --safe_to_invoke_callback;
recursive = FALSE;
return ret; return ret;
} }

View File

@@ -738,6 +738,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
452,
/**/ /**/
451, 451,
/**/ /**/