Junio C Hamano <gitster@xxxxxxxxx> writes: > Johannes Schindelin <Johannes.Schindelin@xxxxxx> 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.