On Fri, Oct 30, 2020 at 09:43:33AM -0700, Elijah Newren wrote: > > I suspect we need the same "var = NULL" that hashmap recently got in > > 0ad621f61e (hashmap_for_each_entry(): workaround MSVC's runtime check > > failure #3, 2020-09-30). Alternatively, I think you could drop > > OFFSETOF_VAR completely in favor offsetof(struct strmap_entry, ent). > > > > In fact, since we know the correct type for "var", we _could_ declare it > > ourselves in a new block enclosing the loop. But that is probably making > > the code too magic; people reading the code would say "huh? where is > > entry declared?". > > Actually, since we know ent is the first entry in strmap, the offset > is always 0. So can't we just avoid OFFSETOF_VAR() and offsetof() > entirely, by just using hashmap_iter_first() and hashmap_iter_next()? > I'm going to try that. Yes, I think that would work fine. You may want to add a comment to the struct indicating that it's important for the hashmap_entry to be at the front of the struct. Using offsetof() means that it's impossible to get it wrong, though. -Peff