From: Michael Haggerty <mhagger@xxxxxxxxxxxx> Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> --- refs.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/refs.c b/refs.c index 0259ad1..044dee9 100644 --- a/refs.c +++ b/refs.c @@ -576,21 +576,23 @@ static int name_conflict_fn(const char *existingrefname, const unsigned char *sh /* * Return true iff a reference named refname could be created without - * conflicting with the name of an existing reference in array. If + * conflicting with the name of an existing reference in direntry. If * oldrefname is non-NULL, ignore potential conflicts with oldrefname * (e.g., because oldrefname is scheduled for deletion in the same * 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; - sort_ref_dir(dir); - if (do_for_each_ref_in_dir(dir, 0, "", name_conflict_fn, + assert(direntry->flag & REF_DIR); + sort_ref_dir(&direntry->u.subdir); + + 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'", @@ -1548,7 +1550,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; } @@ -1709,10 +1711,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.10 -- 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