summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2012-05-03 15:12:54 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-05-04 09:17:50 -0700
commit663c1295d8a6a591a805692d311e1d709e3193e2 (patch)
treefcd7e0bfbdbf381c7c6d74f7dfad440dd017376b /refs.c
parentrefs: read loose references lazily (diff)
downloadtgif-663c1295d8a6a591a805692d311e1d709e3193e2.tar.xz
refs: fix find_containing_dir() regression
The function used to return NULL when asked to find the containing directory for a ref that does not exist, allowing the caller to omit iteration altogether. But a misconversion in an earlier change "refs.c: extract function search_for_subdir()" started returning the top-level directory entry, forcing callers to walk everything. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/refs.c b/refs.c
index 9f2da16642..af5da5f1c1 100644
--- a/refs.c
+++ b/refs.c
@@ -390,8 +390,10 @@ static struct ref_dir *find_containing_dir(struct ref_dir *dir,
refname + dirname.len,
(slash + 1) - (refname + dirname.len));
subdir = search_for_subdir(dir, dirname.buf, mkdir);
- if (!subdir)
+ if (!subdir) {
+ dir = NULL;
break;
+ }
dir = subdir;
}