0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 7.4.2324

Problem:    Crash when editing a new buffer and BufUnload autocommand wipes
            out the new buffer. (Norio Takagi)
Solution:   Don't allow wiping out this buffer. (partly by Hirohito Higashi)
            Move old style test13 into test_autocmd. Avoid ml_get error when
            editing a file.
This commit is contained in:
Bram Moolenaar
2016-09-04 19:50:54 +02:00
parent d77f9d595e
commit e0ab94e712
11 changed files with 133 additions and 122 deletions

View File

@@ -3872,8 +3872,8 @@ do_ecmd(
oldbuf = TRUE;
set_bufref(&bufref, buf);
(void)buf_check_timestamp(buf, FALSE);
/* Check if autocommands made buffer invalid or changed the current
* buffer. */
/* Check if autocommands made the buffer invalid or changed the
* current buffer. */
if (!bufref_valid(&bufref)
#ifdef FEAT_AUTOCMD
|| curbuf != old_curbuf.br_buf
@@ -3938,8 +3938,9 @@ do_ecmd(
win_T *the_curwin = curwin;
/* Set the w_closing flag to avoid that autocommands close the
* window. */
* window. And set b_locked for the same reason. */
the_curwin->w_closing = TRUE;
++buf->b_locked;
if (curbuf == old_curbuf.br_buf)
#endif
@@ -3953,6 +3954,7 @@ do_ecmd(
#ifdef FEAT_AUTOCMD
the_curwin->w_closing = FALSE;
--buf->b_locked;
# ifdef FEAT_EVAL
/* autocmds may abort script processing */
@@ -4139,11 +4141,6 @@ do_ecmd(
/* Assume success now */
retval = OK;
/*
* Reset cursor position, could be used by autocommands.
*/
check_cursor();
/*
* Check if we are editing the w_arg_idx file in the argument list.
*/