Re: [PATCH v2 07/10] wildmatch: explicitly mark intentional use of the comma operator
Hi Johannes
On 25/03/2025 23:32, Johannes Schindelin via GitGitGadget wrote:
Show 9 quoted lines
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> 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@gmx.de>
> ---
> 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;