Re: [PATCH 2/3] credential: teach `credential_from_url()` a non-strict mode
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 23, 2020, 22:16 UTC
- Message-ID
- <xmqqtv19etkx.fsf@gitster.c.googlers.com>
- In-Reply-To
- <xmqqy2qlette.fsf@gitster.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 19 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > >> Yes (modulo doing "greater than" comparison on pointers which is IIRC not >> permitted in C in general). > > Of course, people write a loop like this > > char *cp, *ep = strchr(string, '\n'); > > for (cp = string; cp < ep; cp++) > ... > > all the time, and forbidding pointer comparison would make the > language impossible to use ;-) > > I think you are confused with a different rule---what is not kosher > is to compare two pointers that do not point into elements of the > same array. Whether the comparison is done in (ptr1 < ptr2) way, or > (ptr2 - ptr1 < 0) way, does not change the equation.
Having said that, between
1. if (strict || slash - url > 0) 2. if (strict || slash > url) c->host = url_decode_mem(host, slash - host);
I think the former is moderately easier to read. It still has the same "Huh?" factor that a comparison between slash and URL guards the size of the region being decoded, which is slash - host, and makes the reader wonder how these two variables, URL and host, relate to each other at this point in the code, though, either way the comparison is spelled.
Thanks.