Hi Bram,
FOR_ALL_TAB_WINDOWS() macro contain the double for-loop.
So that, 'break' can not escape this.
I checkd out all the places that using.
I found an appropriate place in aucmd_restbuf().
(Not bug, but occurred wasted loop)
I fixed this and added comment to FOR_ALL_TAB_WINDOWS().
Below is patch. Please check this.
Regards
--
Hirohito Higashi
diff -r 9140571d01ab src/fileio.c
--- a/src/fileio.c Mon Feb 06 00:13:22 2012 +0100
+++ b/src/fileio.c Mon Feb 06 15:20:54 2012 +0900
@@ -8898,10 +8898,11 @@
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);
diff -r 9140571d01ab src/globals.h
--- a/src/globals.h Mon Feb 06 00:13:22 2012 +0100
+++ b/src/globals.h Mon Feb 06 15:20:54 2012 +0900
@@ -535,6 +535,10 @@
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 use this macro, You should NOT use 'break'. Should use 'goto'.
+ * 'break' can not escape the double for-loop.
+ */
# define FOR_ALL_TAB_WINDOWS(tp, wp) \
for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
for ((wp) = ((tp) == curtab) \
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php