From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Rose via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Seija Kijin <doremylover123@gmail.com>
Subject: Re: [PATCH] Remove redundant double exclamation points
Date: Mon, 19 Dec 2022 16:19:23 +0100 [thread overview]
Message-ID: <221219.868rj3za6s.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <pull.1401.git.git.1671459163559.gitgitgadget@gmail.com>
On Mon, Dec 19 2022, Rose via GitGitGadget wrote:
> From: Seija Kijin <doremylover123@gmail.com>
>
> S_ISDIR is a macro that involves a "==" comparison.
It does? The POSIX standard
(https://pubs.opengroup.org/onlinepubs/009604499/basedefs/sys/stat.h.html)
says:
The following macros shall be provided to test whether a file is
of the specified type. The value m supplied to the macros is the
value of st_mode from a stat structure. The macro shall evaluate
to a non-zero value if the test is true; 0 if the test is false.
The "non-zero" there seems to intentionally leave open that this may be
defined e.g. as via a "&" test, as opposed to "==" which according to
C99's 6.5.9.3 says:
The == (equal to) and != (not equal to) operators are analogous
to the relational operators except for their lower
precedence.90) Each of the operators yields 1 if the specified
relation is true and 0 if it is false. The result has type
int. For any pair of operands, exactly one of the relations is
true.
> This means the !! is redundant and not needed.
I think you're therefore introducing a bug here, this may work on your
platform, but we have no guarantee that it'll work elsewhere.
I thought that it probably wouldn't matter, as we'd treat the argument
as a boolean, but we don't. In within_depth() we proceed to use the
passed-in 3rd argument (depth) as a counter, so it really does matter if
it's 0, 1, or other non-zero.
> tree-walk.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/tree-walk.c b/tree-walk.c
> index 74f4d710e8f..6b51d27ccb2 100644
> --- a/tree-walk.c
> +++ b/tree-walk.c
> @@ -1040,9 +1040,9 @@ static enum interesting do_match(struct index_state *istate,
> ps->max_depth == -1)
> return all_entries_interesting;
> return within_depth(base->buf + base_offset, baselen,
> - !!S_ISDIR(entry->mode),
> - ps->max_depth) ?
> - entry_interesting : entry_not_interesting;
> + S_ISDIR(entry->mode), ps->max_depth) ?
> + entry_interesting :
> + entry_not_interesting;
> }
>
> pathlen = tree_entry_len(entry);
Aside from whether or not this is a bug, could you please submit
proposed refactorings of the git project via coccinelle patches if
possible (as I suggested to you before).
I realize that it has a slight learning curve, but it makes writing &
maintaining these so much easier, and it'll fix (mis)uses going forward,
not just as a one-off.
So, as an example (and assuming this wasn't buggy), you'd do that in
this case as e.g. (untested, but you can see similar syntax in our
existing *.cocci files):
@@
@@
- !!
(
S_ISDIR
|
S_ISFIFO
// |
// we'd continue to list the rest here...
)
(...)
next prev parent reply other threads:[~2022-12-19 15:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-19 14:12 [PATCH] Remove redundant double exclamation points Rose via GitGitGadget
2022-12-19 15:19 ` Ævar Arnfjörð Bjarmason [this message]
2022-12-20 0:50 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=221219.868rj3za6s.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=doremylover123@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).