* [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).