On Thu, Sep 10, 2020 at 3:08 PM Martin Ågren <martin.agren@xxxxxxxxx> wrote: > We track the number of worktrees we've found and break out of the loop > early once we hit 2. This is because we're not really interested in the > number of matches -- we just want to make sure that we don't find more > than one worktree that matches the suffix. This can be done just as well > by checking the NULL-ness of the pointer where we collect our > answer-to-be. Drop the redundant `nr_found` variable. > > Signed-off-by: Martin Ågren <martin.agren@xxxxxxxxx> > --- > diff --git a/worktree.c b/worktree.c > @@ -172,13 +172,13 @@ static struct worktree *find_worktree_by_suffix(struct worktree **list, > const char *suffix) > { > - for (; *list && nr_found < 2; list++) { > + for (; *list; list++) { > @@ -186,11 +186,12 @@ static struct worktree *find_worktree_by_suffix(struct worktree **list, > if ((!start || (start > 0 && is_dir_sep(path[start - 1]))) && > !fspathcmp(suffix, path + start)) { > + if (found) > + return NULL; > found = *list; > - nr_found++; > } > } > - return nr_found == 1 ? found : NULL; > + return found; Although this change appears to be correct and does simplify the code, I think it also makes it a bit more opaque. With the explicit `nr_found == 1`, it is quite obvious that the function considers "success" to be when one and only one entry is found and any other number is failure. But with the revised code, it is harder to work out precisely what the conditions are. Having said that, I think a simple comment before the function would suffice to clear up the opaqueness. Perhaps something like: /* If exactly one worktree matches 'target', return it, else NULL. */