On Tue, Aug 04, 2015 at 06:42:46PM -0400, Jeff King wrote: > > I did not intend this change in behavior, and I can confirm that > > reverting my patch restores the original behavior. Thanks for bringing > > this to my attention, I'll work on a patch. > > I think this regression is in v2.4.8, as well. We should be able to use > a running "len" instead of the "end" pointer in the earlier part, and > then use strip_suffix_mem later (to strip from our already-reduced > length, rather than the full NUL-terminated string). Like this: Looks like "git clone --bare host:foo/.git" is broken, too. I've added some tests to cover the recently broken cases, as well as some obvious normal cases (which the patch I sent earlier break!). And as a bonus, we can easily cover Patrick's root-repo problems (so people will actually run the tests, unlike the stuff in t1509. :) ). > @@ -167,14 +166,14 @@ static char *guess_dir_name(const char *repo, int is_bundle, int is_bare) > * the form "remote.example.com:foo.git", i.e. no slash > * in the directory part. > */ > - start = end; > + start = repo + len; > while (repo < start && !is_dir_sep(start[-1]) && start[-1] != ':') > start--; > > /* > * Strip .{bundle,git}. > */ > - strip_suffix(start, is_bundle ? ".bundle" : ".git" , &len); > + strip_suffix_mem(start, &len, is_bundle ? ".bundle" : ".git"); This is crap, of course. Our "len" variable is computed from the start of "repo", of which "start" is a subset. So we are indexing way out of bounds here. As it turns out, this actually makes things simpler. We can stop using "len" entirely in the early part, and leave it as-is with pointer math (the patch I sent earlier did not really make anything simpler, anyway). And then we can just compute the length of "start" here, minus everything we've stripped off the end (i.e., "len = end - start"). Here are the patches. [1/2]: clone: add tests for output directory [2/2]: clone: use computed length in guess_dir_name -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html