]> granicus.if.org Git - vim/commitdiff
patch 8.2.0745: crash on exit when not all popups are closed v8.2.0745
authorBram Moolenaar <Bram@vim.org>
Tue, 12 May 2020 21:45:16 +0000 (23:45 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 12 May 2020 21:45:16 +0000 (23:45 +0200)
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
src/misc2.c
src/version.c

index 9c55de3adf635f1c2da3cd646082a045d81c22b3..f38bdacb63a9f795375dae7c95f1ea2f3d563372 100644 (file)
@@ -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);
index db03b5b1f9ddf9801150c6c82d2573260da47bd0..0ab6caffaf334235383d95383582c1c69a776999 100644 (file)
@@ -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();
index bd5337bca741d33257a40355ba1199a4627fa358..aa88847e7bd626d8d7af1e4dccb4a75fbbaf1fef 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    745,
 /**/
     744,
 /**/