static void
wipe_dummy_buffer(buf_T *buf, char_u *dirname_start)
{
- if (curbuf != buf) // safety check
+ // If any autocommand opened a window on the dummy buffer, close that
+ // window. If we can't close them all then give up.
+ while (buf->b_nwindows > 0)
+ {
+ int did_one = FALSE;
+ win_T *wp;
+
+ if (firstwin->w_next != NULL)
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ if (wp->w_buffer == buf)
+ {
+ if (win_close(wp, FALSE) == OK)
+ did_one = TRUE;
+ break;
+ }
+ if (!did_one)
+ return;
+ }
+
+ if (curbuf != buf && buf->b_nwindows == 0) // safety check
{
#if defined(FEAT_EVAL)
cleanup_T cs;
enew | only
endfunc
+func Test_lvimgrep_crash2()
+ au BufNewFile x sfind
+ call assert_fails('lvimgrep x x', 'E480:')
+ call assert_fails('lvimgrep x x x', 'E480:')
+
+ au! BufNewFile
+endfunc
+
" Test for the position of the quickfix and location list window
func Test_qfwin_pos()
" Open two windows