From: Michael Haggerty <mhagger@xxxxxxxxxxxx> Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> --- refs.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/refs.c b/refs.c index d6d5d0e..6bda033 100644 --- a/refs.c +++ b/refs.c @@ -586,14 +586,16 @@ static int name_conflict_fn(const char *existingrefname, const unsigned char *sh * operation). */ static int is_refname_available(const char *refname, const char *oldrefname, - struct ref_dir *dir) + struct ref_entry *direntry) { struct name_conflict_cb data; data.refname = refname; data.oldrefname = oldrefname; data.conflicting_refname = NULL; - if (do_for_each_ref_in_dir(dir, 0, "", name_conflict_fn, + assert(direntry->flag & REF_DIR); + + if (do_for_each_ref_in_dir(&direntry->u.subdir, 0, "", name_conflict_fn, 0, DO_FOR_EACH_INCLUDE_BROKEN, &data)) { error("'%s' exists; cannot create '%s'", @@ -1567,7 +1569,7 @@ static struct ref_lock *lock_ref_sha1_basic(const char *refname, */ if (missing && !is_refname_available(refname, NULL, - &get_packed_refs(get_ref_cache(NULL))->u.subdir)) { + get_packed_refs(get_ref_cache(NULL)))) { last_errno = ENOTDIR; goto error_return; } @@ -1728,10 +1730,10 @@ int rename_ref(const char *oldrefname, const char *newrefname, const char *logms if (!symref) return error("refname %s not found", oldrefname); - if (!is_refname_available(newrefname, oldrefname, &get_packed_refs(refs)->u.subdir)) + if (!is_refname_available(newrefname, oldrefname, get_packed_refs(refs))) return 1; - if (!is_refname_available(newrefname, oldrefname, &get_loose_refs(refs)->u.subdir)) + if (!is_refname_available(newrefname, oldrefname, get_loose_refs(refs))) return 1; if (log && rename(git_path("logs/%s", oldrefname), git_path(TMP_RENAMED_LOG))) -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html