Re: Weird problem with long $PATH and alternates (bisected)
- From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
- Date
- Oct 26, 2008, 17:53 UTC
- Message-ID
- <4904AE8D.9090706@lsrfire.ath.cx>
- In-Reply-To
- <7vljwb5o4p.fsf@gitster.siamese.dyndns.org>
Junio C Hamano schrieb:
Show 14 quoted lines
> "Mikael Magnusson" <mikachu@gmail.com> writes: > >> % mkdir 1; cd 1 >> % echo > a; git add a; git commit -m a >> % cd .. >> % git clone -s 1 2 >> % git push . master:master >> fatal: Could not switch to >> '/tmp/a/1/.git/objects/n:/usr/games/bin:/usr/local/ipod-chain' >> fatal: The remote end hung up unexpectedly > > I think I see a bug in foreach_alt_odb() to add_refs_from_alternate() > callchain, but I cannot explain why the contents of $PATH leaks to the > error message.
With the following patch, I can no longer reproduce the problem. Does it work fo you, too?
Thanks, René
diff --git a/sha1_file.c b/sha1_file.c index ab2b520..8044e9c 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -269,7 +269,7 @@ static int link_alt_odb_entry(const char * entry, int len, const char * relative entlen += base_len; pfxlen += base_len; } - ent = xmalloc(sizeof(*ent) + entlen); + ent = xcalloc(1, sizeof(*ent) + entlen); if (!is_absolute_path(entry) && relative_base) { memcpy(ent->base, relative_base, base_len - 1);