On Wed, 25 Oct 2023 at 06:00, Jelte Fennema <postg...@jeltef.nl> wrote: > Attached is a fixed version.
With foreach(), we commonly do "if (lc == NULL)" at the end of loops as a way of checking if we did "break" to terminate the loop early. Doing the equivalent with the new macros won't be safe as the list element's value we broke on may be set to NULL. I think it might be a good idea to document the fact that this wouldn't be safe with the new macros, or better yet, document the correct way to determine if we broke out the loop early. I imagine someone will want to do some conversion work at some future date and it would be good if we could avoid introducing bugs during that process. I wonder if we should even bother setting the variable to NULL at the end of the loop. It feels like someone might just end up mistakenly checking for NULLs even if we document that it's not safe. If we left the variable pointing to the last list element then the user of the macro is more likely to notice their broken code. It'd also save a bit of instruction space. David