Jeff King <peff@xxxxxxxx> writes: > - slash = strchrnul(cp, '/'); > + > + /* > + * A query or fragment marker before the slash ends the host portion. > + * We'll just continue to call this "slash" for simplicity. Notably our > + * "trim leading slashes" part won't skip over this part of the path, > + * but that's what we'd want. > + */ > + slash = cp + strcspn(cp, "/?#"); Whatever happened when the original did not find any slash should happen in the new code when none of these three terminating bytes is found. The original made slash point at the end of the string, and the new code does the same. So, by definition, the code is correct ;-) > diff --git a/t/t0300-credentials.sh b/t/t0300-credentials.sh > index 5b78ebbc3f..b6ec676989 100755 > --- a/t/t0300-credentials.sh > +++ b/t/t0300-credentials.sh > @@ -443,11 +443,45 @@ test_expect_success 'url parser ignores embedded newlines' ' > username=askpass-username > password=askpass-password > -- > - warning: url contains a newline in its host component: https://one.example.com?%0ahost=two.example.com/ > + warning: url contains a newline in its path component: https://one.example.com?%0ahost=two.example.com/ Nice demonstration ;-).