Mercurial > vim
changeset 3340:539613ce999d v7.3.437
updated for version 7.3.437
Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done.
Solution: Use goto instead of break. (Hirohito Higashi)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 11 Feb 2012 23:45:37 +0100 |
parents | a5c143237d86 |
children | 4d2f7f850f63 |
files | src/fileio.c src/globals.h src/version.c |
diffstat | 3 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -8898,10 +8898,11 @@ aucmd_restbuf(aco) if (tp != curtab) goto_tabpage_tp(tp); win_goto(aucmd_win); - break; + goto win_found; } } } +win_found: /* Remove the window and frame from the tree of frames. */ (void)winframe_remove(curwin, &dummy, NULL);
--- a/src/globals.h +++ b/src/globals.h @@ -535,6 +535,10 @@ EXTERN win_T *lastwin; /* last window * EXTERN win_T *prevwin INIT(= NULL); /* previous window */ # define W_NEXT(wp) ((wp)->w_next) # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) +/* + * When using this macro "break" only breaks out of the inner loop. Use "goto" + * to break out of the tabpage loop. + */ # define FOR_ALL_TAB_WINDOWS(tp, wp) \ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ for ((wp) = ((tp) == curtab) \