diff --git a/src/window.c b/src/window.c
index 964f1ef..7efe7b1 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1428,10 +1428,10 @@
 #ifdef FEAT_PROP_POPUP
     win_T	*wp;
 
-    for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
+    FOR_ALL_POPUPWINS(wp)
 	if (wp == win)
 	    return TRUE;
-    for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
+    FOR_ALL_POPUPWINS_IN_TAB(curtab, wp)
 	if (wp == win)
 	    return TRUE;
 #endif
@@ -1473,7 +1473,7 @@
 		return TRUE;
 	}
 #ifdef FEAT_PROP_POPUP
-	for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
+	FOR_ALL_POPUPWINS_IN_TAB(tp, wp)
 	    if (wp == win)
 		return TRUE;
 #endif
@@ -2276,7 +2276,7 @@
     {
 	nexttp = tp->tp_next;
 	if (tp != curtab)
-	    for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+	    FOR_ALL_WINDOWS_IN_TAB(tp, wp)
 		if (wp->w_buffer == buf
 		    && !(wp->w_closing || wp->w_buffer->b_locked > 0))
 		{
@@ -4785,7 +4785,7 @@
     FOR_ALL_TABPAGES(tp)
 	if (tp != curtab)
 	{
-	    for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+	    FOR_ALL_WINDOWS_IN_TAB(tp, wp)
 		if (wp->w_buffer == buf)
 		    break;
 	    if (wp != NULL)
@@ -4968,7 +4968,7 @@
     // Remove the window from the b_wininfo lists, it may happen that the
     // freed memory is re-used for another window.
     FOR_ALL_BUFFERS(buf)
-	for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+	FOR_ALL_BUF_WININFO(buf, wip)
 	    if (wip->wi_win == wp)
 		wip->wi_win = NULL;
 
