diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-10 22:11:16 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-10 22:11:16 +0200 |
commit | 7c0a2f367f2507669560b1a66423155c70d2e75b (patch) | |
tree | 7cd0523311a25f653497197abc1fa86ed62bcc79 /src/window.c | |
parent | ea3f2e7be447a8f0c4436869620f908de5e8ef1e (diff) | |
download | vim-git-7c0a2f367f2507669560b1a66423155c70d2e75b.tar.gz |
patch 7.4.2024v7.4.2024
Problem: More buf_valid() calls can be optimized.
Solution: Use bufref_valid() instead.
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/window.c b/src/window.c index c3cd7a233..b9e75d6df 100644 --- a/src/window.c +++ b/src/window.c @@ -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; } } |