Git fork

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>

authored by

Johannes Schindelin and committed by
Junio C Hamano
88c91d7d 752fe9dc

+5 -2
+4 -1
compat/regex/regex_internal.c
··· 1232 1232 is = src->nelem - 1, id = dest->nelem - 1; is >= 0 && id >= 0; ) 1233 1233 { 1234 1234 if (dest->elems[id] == src->elems[is]) 1235 - is--, id--; 1235 + { 1236 + is--; 1237 + id--; 1238 + } 1236 1239 else if (dest->elems[id] < src->elems[is]) 1237 1240 dest->elems[--sbase] = src->elems[is--]; 1238 1241 else /* if (dest->elems[id] > src->elems[is]) */
+1 -1
compat/regex/regexec.c
··· 2210 2210 /* mctx->bkref_ents may have changed, reload the pointer. */ 2211 2211 entry = mctx->bkref_ents + enabled_idx; 2212 2212 } 2213 - while (enabled_idx++, entry++->more); 2213 + while ((void)enabled_idx++, entry++->more); 2214 2214 } 2215 2215 err = REG_NOERROR; 2216 2216 free_return: