patch 9.0.1390: FOR_ALL_ macros are defined in an unexpected file
Problem: FOR_ALL_ macros are defined in an unexpected file.
Solution: Move FOR_ALL_ macros to macros.h. Add FOR_ALL_HASHTAB_ITEMS.
(Yegappan Lakshmanan, closes #12109)
diff --git a/src/userfunc.c b/src/userfunc.c
index 9e24b79..878e07f 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2313,7 +2313,7 @@
// Make a copy of the a: variables, since we didn't do that above.
todo = (int)fc->fc_l_avars.dv_hashtab.ht_used;
- for (hi = fc->fc_l_avars.dv_hashtab.ht_array; todo > 0; ++hi)
+ FOR_ALL_HASHTAB_ITEMS(&fc->fc_l_avars.dv_hashtab, hi, todo)
{
if (!HASHITEM_EMPTY(hi))
{
@@ -3296,7 +3296,7 @@
while (todo > 0)
{
todo = func_hashtab.ht_used;
- for (hi = func_hashtab.ht_array; todo > 0; ++hi)
+ FOR_ALL_HASHTAB_ITEMS(&func_hashtab, hi, todo)
if (!HASHITEM_EMPTY(hi))
{
fp = HI2UF(hi);
@@ -3353,7 +3353,7 @@
while (todo > 0)
{
todo = func_hashtab.ht_used;
- for (hi = func_hashtab.ht_array; todo > 0; ++hi)
+ FOR_ALL_HASHTAB_ITEMS(&func_hashtab, hi, todo)
if (!HASHITEM_EMPTY(hi))
{
// clear the def function index now
@@ -3385,7 +3385,7 @@
while (func_hashtab.ht_used > skipped)
{
todo = func_hashtab.ht_used;
- for (hi = func_hashtab.ht_array; todo > 0; ++hi)
+ FOR_ALL_HASHTAB_ITEMS(&func_hashtab, hi, todo)
if (!HASHITEM_EMPTY(hi))
{
--todo;