refs: fix find_containing_dir() regression
authorJunio C Hamano <gitster@pobox.com>
Thu, 3 May 2012 22:12:54 +0000 (15:12 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 May 2012 16:17:50 +0000 (09:17 -0700)
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>
refs.c

diff --git a/refs.c b/refs.c
index 9f2da16642b2e284ef96ff12547262cdc2e0bfee..af5da5f1c1c3f756a5488c4c45332925bbf65e77 100644 (file)
--- 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;
        }