Be careful with BUN-NONE values in hash loops The test web hints at problem when BUN4 is used. Note, for each BUN* case we use a different BUN_NONE value to mark the end of the linked list. However, in a HASHloop
Be careful with BUN-NONE values in hash loops
The test web hints at problem when BUN4 is used.
Note, for each BUN* case we use a different BUN_NONE value
to mark the end of the linked list. However, in a HASHloop

#define HASHlooploc(bi, h, hb, v)               \
    for (hb = HASHget(h, HASHprobe(h, v));          \
         hb != HASHnil(h);                  \
         hb = HASHgetlink(h,hb))                \
        if (ATOMcmp(h->type, v, BUNhloc(bi, hb)) == 0)

we break out when the BUN specific BUN_NONE is found.
There is no guarantee that hb is not tested for the general BUN_NONE
value afterwards, which now could be the BUN4 version.

Perhaps the following will do the trick

#define HASHlooploc(bi, h, hb, v)               \
    for (hb = HASHget(h, HASHprobe(h, v));          \
         TRUE;                  \
         hb = HASHgetlink(h,hb))                \
    if ( hb == HASHnil(h)) { hb = BUN_NONE;break;} else \
        if (ATOMcmp(h->type, v, BUNhloc(bi, hb)) == 0)

It seems to address a single error instance. The code does not
contain direct access to hash[ and link[.
Up for a second testweb round.

zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb