1
0
forked from aniani/vim

patch 7.4.2024

Problem:    More buf_valid() calls can be optimized.
Solution:   Use bufref_valid() instead.
This commit is contained in:
Bram Moolenaar
2016-07-10 22:11:16 +02:00
parent ea3f2e7be4
commit 7c0a2f367f
21 changed files with 218 additions and 133 deletions

View File

@@ -2340,6 +2340,9 @@ win_close(win_T *win, int free_buf)
*/
if (win->w_buffer != NULL)
{
bufref_T bufref;
set_bufref(&bufref, curbuf);
#ifdef FEAT_AUTOCMD
win->w_closing = TRUE;
#endif
@@ -2350,7 +2353,7 @@ win_close(win_T *win, int free_buf)
#endif
/* Make sure curbuf is valid. It can become invalid if 'bufhidden' is
* "wipe". */
if (!buf_valid(curbuf))
if (!bufref_valid(&bufref))
curbuf = firstbuf;
}
@@ -6632,12 +6635,12 @@ restore_win(
* No autocommands will be executed. Use aucmd_prepbuf() if there are any.
*/
void
switch_buffer(buf_T **save_curbuf, buf_T *buf)
switch_buffer(bufref_T *save_curbuf, buf_T *buf)
{
# ifdef FEAT_AUTOCMD
block_autocmds();
# endif
*save_curbuf = curbuf;
set_bufref(save_curbuf, curbuf);
--curbuf->b_nwindows;
curbuf = buf;
curwin->w_buffer = buf;
@@ -6648,17 +6651,17 @@ switch_buffer(buf_T **save_curbuf, buf_T *buf)
* Restore the current buffer after using switch_buffer().
*/
void
restore_buffer(buf_T *save_curbuf)
restore_buffer(bufref_T *save_curbuf)
{
# ifdef FEAT_AUTOCMD
unblock_autocmds();
# endif
/* Check for valid buffer, just in case. */
if (buf_valid(save_curbuf))
if (bufref_valid(save_curbuf))
{
--curbuf->b_nwindows;
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
curwin->w_buffer = save_curbuf->br_buf;
curbuf = save_curbuf->br_buf;
++curbuf->b_nwindows;
}
}