Mercurial > vim
diff src/window.c @ 9487:69ed2c9d34a6 v7.4.2024
commit https://github.com/vim/vim/commit/7c0a2f367f2507669560b1a66423155c70d2e75b
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 10 22:11:16 2016 +0200
patch 7.4.2024
Problem: More buf_valid() calls can be optimized.
Solution: Use bufref_valid() instead.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Jul 2016 22:15:06 +0200 |
parents | b24900b73f90 |
children | 0190d5de215f |
line wrap: on
line diff
--- 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 * 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; } }