summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-11-12 10:27:39 +0000
committerJunio C Hamano <gitster@pobox.com>2017-11-13 14:05:27 +0900
commitf28e36686aae9203c0e4375f6d106ddccd129efc (patch)
tree680acb4959c00784509cdf61133f975e6b4dc83d
parentf0f7bebef73346a12aa1e22cf5264cbc241ab069 (diff)
downloadgit-jk/info-alternates-fix.tar.gz
link_alt_odb_entries: make empty input a noopjk/info-alternates-fix
If an empty string is passed to link_alt_odb_entries(), our loop finds no entries and we link nothing. But we still do some preparatory work to normalize the object directory path, even though we'll never look at the result. This triggers in basically every git process, since we feed the usually-empty ALTERNATE_DB_ENVIRONMENT to the function. Let's detect early that there's nothing to do and return. While we're at it, let's treat NULL the same as an empty string as a favor to our callers. That saves prepare_alt_odb() from having to cover this case. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--sha1_file.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c
index d65ca43245..b8b897a307 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -428,6 +428,9 @@ static void link_alt_odb_entries(const char *alt, int sep,
struct strbuf objdirbuf = STRBUF_INIT;
struct strbuf entry = STRBUF_INIT;
+ if (!alt || !*alt)
+ return;
+
if (depth > 5) {
error("%s: ignoring alternate object stores, nesting too deep.",
relative_base);
@@ -631,7 +634,6 @@ void prepare_alt_odb(void)
return;
alt = getenv(ALTERNATE_DB_ENVIRONMENT);
- if (!alt) alt = "";
alt_odb_tail = &alt_odb_list;
link_alt_odb_entries(alt, PATH_SEP, NULL, 0);