compat/regex: explicitly mark intentional use of the comma operator

The comma operator is a somewhat obscure C feature that is often used by mistake and can even cause unintentional code flow. That is why the `-Wcomma` option of clang was introduced: To identify unintentional uses of the comma operator. In the `compat/regex/` code, the comma operator is used twice, once to avoid surrounding two conditional statements with curly brackets, the other one to increment two counters simultaneously in a `do ... while` condition. The first one is replaced with a proper conditional block, surrounded by curly brackets. The second one would be harder to replace because the loop contains two `continue`s. Therefore, the second one is marked as intentional by casting the value-to-discard to `void`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Acked-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Mar 27, 2025 at 11:53 UTC 88c91d7d742b802a8774383641f8d997cfd1cd0c
2 files changed +5 -2
compat/regex/regex_internal.c
+4 -1
@@ -1232,7 +1232,10 @@ re_node_set_merge (re_node_set *dest, const re_node_set *src)
1232 is = src->nelem - 1, id = dest->nelem - 1; is >= 0 && id >= 0; )
1233 {
1234 if (dest->elems[id] == src->elems[is])
1235 - is--, id--;
1235 + {
1236 + is--;
1237 + id--;
1238 + }
1239 else if (dest->elems[id] < src->elems[is])
1240 dest->elems[--sbase] = src->elems[is--];
1241 else /* if (dest->elems[id] > src->elems[is]) */
compat/regex/regexec.c
+1 -1
@@ -2210,7 +2210,7 @@ sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
2210 /* mctx->bkref_ents may have changed, reload the pointer. */
2211 entry = mctx->bkref_ents + enabled_idx;
2212 }
2213 - while (enabled_idx++, entry++->more);
2213 + while ((void)enabled_idx++, entry++->more);
2214 }
2215 err = REG_NOERROR;
2216 free_return: