patch 7.4.2101
Problem: Looping over windows, buffers and tab pages is inconsistant.
Solution: Use FOR_ALL_ macros everywhere. (Yegappan Lakshmanan)
diff --git a/src/if_perl.xs b/src/if_perl.xs
index a2ff452..5b5023c 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1534,14 +1534,14 @@
if (GIMME == G_SCALAR)
{
i = 0;
- for (vimbuf = firstbuf; vimbuf; vimbuf = vimbuf->b_next)
+ FOR_ALL_BUFFERS(vimbuf)
++i;
XPUSHs(sv_2mortal(newSViv(i)));
}
else
{
- for (vimbuf = firstbuf; vimbuf; vimbuf = vimbuf->b_next)
+ FOR_ALL_BUFFERS(vimbuf)
XPUSHs(newBUFrv(newSV(0), vimbuf));
}
}
@@ -1586,7 +1586,7 @@
XPUSHs(sv_2mortal(newSViv(win_count())));
else
{
- for (vimwin = firstwin; vimwin != NULL; vimwin = W_NEXT(vimwin))
+ FOR_ALL_WINDOWS(vimwin)
XPUSHs(newWINrv(newSV(0), vimwin));
}
}