* [PATCH] grep: remove tautological check
@ 2012-10-20 17:26 David Soria Parra
2012-10-20 19:23 ` Peter Krefting
2012-10-22 13:20 ` Peter Krefting
0 siblings, 2 replies; 3+ messages in thread
From: David Soria Parra @ 2012-10-20 17:26 UTC (permalink / raw)
To: git; +Cc: David Soria Parra
The enum grep_header_field is unsigned. Therefore the field part of the
grep_pat structure is unsigned and cannot be less then 0. We remove the
tautological check for p->field < 0.
Signed-off-by: David Soria Parra <dsp@php.net>
---
grep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grep.c b/grep.c
index 4bd1b8b..db177ef 100644
--- a/grep.c
+++ b/grep.c
@@ -625,7 +625,7 @@ static struct grep_expr *prep_header_patterns(struct grep_opt *opt)
for (p = opt->header_list; p; p = p->next) {
if (p->token != GREP_PATTERN_HEAD)
die("bug: a non-header pattern in grep header list.");
- if (p->field < 0 || GREP_HEADER_FIELD_MAX <= p->field)
+ if (GREP_HEADER_FIELD_MAX <= p->field)
die("bug: unknown header field %d", p->field);
compile_regexp(p, opt);
}
--
1.8.0.rc3.332.g181c802
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] grep: remove tautological check
2012-10-20 17:26 [PATCH] grep: remove tautological check David Soria Parra
@ 2012-10-20 19:23 ` Peter Krefting
2012-10-22 13:20 ` Peter Krefting
1 sibling, 0 replies; 3+ messages in thread
From: Peter Krefting @ 2012-10-20 19:23 UTC (permalink / raw)
To: David Soria Parra; +Cc: git
David Soria Parra:
> The enum grep_header_field is unsigned.
Enumerations can be either unsigned or signed, it is up to the
compiler to decide. Even if you assign only positive number to named
enumeration values, there are compilers that make them signed. I've
been bitten by that enough.
--
\\// Peter - http://www.softwolves.pp.se/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] grep: remove tautological check
2012-10-20 17:26 [PATCH] grep: remove tautological check David Soria Parra
2012-10-20 19:23 ` Peter Krefting
@ 2012-10-22 13:20 ` Peter Krefting
1 sibling, 0 replies; 3+ messages in thread
From: Peter Krefting @ 2012-10-22 13:20 UTC (permalink / raw)
To: David Soria Parra; +Cc: Git Mailing List
David Soria Parra:
> - if (p->field < 0 || GREP_HEADER_FIELD_MAX <= p->field)
> + if (GREP_HEADER_FIELD_MAX <= p->field)
A friend taught me this trick, which will check that it isn't negative
for compilers that have the enumeration be signed (notably MSVC),
while not complaining for compilers that have it unsigned (GCC, Clang):
const unsigned int sign = 1u << (sizeof(p->field) * CHAR_BIT - 1);
if (!(sign & (unsigned int) p->field) || GREP_HEADER_FIELD_MAX <= p->field)
--
\\// Peter - http://www.softwolves.pp.se/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-10-22 13:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-20 17:26 [PATCH] grep: remove tautological check David Soria Parra
2012-10-20 19:23 ` Peter Krefting
2012-10-22 13:20 ` Peter Krefting
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).