From 06f0853cb0b10364b22e5607fdecd35b3936e9ea Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 12 May 2020 23:45:16 +0200 Subject: [PATCH] patch 8.2.0745: crash on exit when not all popups are closed Problem: Crash on exit when not all popups are closed. Solution: Close popups when freeing all memory. Disable checking for popup when editing a file for now. --- src/ex_cmds.c | 5 ----- src/misc2.c | 11 +++++++++-- src/version.c | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 9c55de3ad..f38bdacb6 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -2484,11 +2484,6 @@ do_ecmd( int did_inc_redrawing_disabled = FALSE; long *so_ptr = curwin->w_p_so >= 0 ? &curwin->w_p_so : &p_so; -#ifdef FEAT_PROP_POPUP - if (ERROR_IF_TERM_POPUP_WINDOW) - return FAIL; -#endif - if (eap != NULL) command = eap->do_ecmd_cmd; set_bufref(&old_curbuf, curbuf); diff --git a/src/misc2.c b/src/misc2.c index db03b5b1f..0ab6caffa 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -1069,6 +1069,14 @@ free_all_mem(void) # if defined(FEAT_BEVAL_TERM) ui_remove_balloon(); # endif +# if defined(FEAT_PROP_POPUP) + if (curwin != NULL) + { + while (popup_is_popup(curwin)) + popup_close_with_retval(curwin, 0); + close_all_popups(); + } +# endif // Clear user commands (before deleting buffers). ex_comclear(NULL); @@ -3144,8 +3152,7 @@ call_shell(char_u *cmd, int opt) if (p_verbose > 3) { verbose_enter(); - smsg(_("Calling shell to execute: \"%s\""), - cmd == NULL ? p_sh : cmd); + smsg(_("Calling shell to execute: \"%s\""), cmd == NULL ? p_sh : cmd); out_char('\n'); cursor_on(); verbose_leave(); diff --git a/src/version.c b/src/version.c index bd5337bca..aa88847e7 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 745, /**/ 744, /**/ -- 2.50.1