vim-patch:7.4.2347

Problem:    Crash when closing a buffer while Visual mode is active.
            (Dominique Pelle)
Solution:   Adjust the position before computing the number of lines.
            When closing the current buffer stop Visual mode.

c4a908e836
This commit is contained in:
raichoo
2017-03-11 10:46:50 +01:00
parent 4500b16f15
commit ae828982ce
4 changed files with 29 additions and 2 deletions

View File

@@ -438,6 +438,13 @@ void close_buffer(win_T *win, buf_T *buf, int action, int abort_if_last)
/* Remember if we are closing the current buffer. Restore the number of
* windows, so that autocommands in buf_freeall() don't get confused. */
bool is_curbuf = (buf == curbuf);
// When closing the current buffer stop Visual mode before freeing
// anything.
if (is_curbuf) {
end_visual_mode();
}
buf->b_nwindows = nwindows;
buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
@@ -1075,6 +1082,11 @@ do_buffer (
}
}
// When closing the current buffer stop Visual mode.
if (buf == curbuf) {
end_visual_mode();
}
/*
* If deleting the last (listed) buffer, make it empty.
* The last (listed) buffer cannot be unloaded.