Hi Johannes On 25/03/2025 23:32, Johannes Schindelin via GitGitGadget wrote:
From: Johannes Schindelin <johannes.schindelin@xxxxxx> The alternative to using the comma operator would be to move those assignments from the condition into the loop body; In this particular case that would require the assignments to either be duplicated or to introduce and use a `goto` target before the assignments, though, because the loop body contains a `continue` for the case where a character class is found that starts with `[:` but does not end in `:]` (and the assignments should occur even when that code path is taken).
I think that would be clearer, something like the diff below Best Wishes Phillip ---- >8 ---- diff --git a/wildmatch.c b/wildmatch.c index 8ea29141bd7..7230544c356 100644 --- a/wildmatch.c +++ b/wildmatch.c @@ -223,7 +223,7 @@ p_ch = '['; if (t_ch == p_ch) matched = 1; - continue; + goto next; } if (CC_EQ(s,i, "alnum")) { if (ISALNUM(t_ch)) @@ -268,7 +268,10 @@ p_ch = 0; /* This makes "prev_ch" get set to 0. */ } else if (t_ch == p_ch) matched = 1; - } while (prev_ch = p_ch, (p_ch = *++p) != ']'); + next: + prev_ch = p_ch; + p_ch = *++p; + } while (p_ch != ']'); if (matched == negated || ((flags & WM_PATHNAME) && t_ch == '/')) return WM_NOMATCH; Phillip> Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
--- wildmatch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wildmatch.c b/wildmatch.c index 8ea29141bd7..ce8108a6d57 100644 --- a/wildmatch.c +++ b/wildmatch.c @@ -268,7 +268,7 @@ static int dowild(const uchar *p, const uchar *text, unsigned int flags) p_ch = 0; /* This makes "prev_ch" get set to 0. */ } else if (t_ch == p_ch) matched = 1; - } while (prev_ch = p_ch, (p_ch = *++p) != ']'); + } while ((void)(prev_ch = p_ch), (p_ch = *++p) != ']'); if (matched == negated || ((flags & WM_PATHNAME) && t_ch == '/')) return WM_NOMATCH;