summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-05-03 22:12:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-05-04 16:17:50 (GMT)
commit663c1295d8a6a591a805692d311e1d709e3193e2 (patch)
treefcd7e0bfbdbf381c7c6d74f7dfad440dd017376b /refs.c
parent28e6a34e254a1ee5fc3d106e4a6117fd02254589 (diff)
downloadgit-663c1295d8a6a591a805692d311e1d709e3193e2.zip
git-663c1295d8a6a591a805692d311e1d709e3193e2.tar.gz
git-663c1295d8a6a591a805692d311e1d709e3193e2.tar.bz2
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 9f2da16..af5da5f 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;
}