X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=diffcore-rename.c;h=531d7adeafe0e218de2a56a9dbb8b4156d2d4921;hb=51728480fe0639e918927dedb3bb6b933c588fae;hp=9042936abae1f1a8b39d2cf663070a7d981ff0c6;hpb=5b900fb812f678183d2810427b8862eb7f0dc22b;p=thirdparty%2Fgit.git diff --git a/diffcore-rename.c b/diffcore-rename.c index 9042936aba..531d7adeaf 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -274,18 +274,17 @@ static int find_identical_files(struct hashmap *srcs, struct diff_options *options) { int renames = 0; - struct diff_filespec *target = rename_dst[dst_index].two; struct file_similarity *p, *best = NULL; int i = 100, best_score = -1; + unsigned int hash = hash_filespec(options->repo, target); /* * Find the best source match for specified destination. */ - p = hashmap_get_from_hash(srcs, - hash_filespec(options->repo, target), - NULL); - for (; p; p = hashmap_get_next(srcs, p)) { + p = hashmap_get_entry_from_hash(srcs, hash, NULL, + struct file_similarity, entry); + hashmap_for_each_entry_from(srcs, p, entry) { int score; struct diff_filespec *source = p->filespec; @@ -329,8 +328,8 @@ static void insert_file_table(struct repository *r, entry->index = index; entry->filespec = filespec; - hashmap_entry_init(entry, hash_filespec(r, filespec)); - hashmap_add(table, entry); + hashmap_entry_init(&entry->entry, hash_filespec(r, filespec)); + hashmap_add(table, &entry->entry); } /* @@ -359,7 +358,7 @@ static int find_exact_renames(struct diff_options *options) renames += find_identical_files(&file_table, i, options); /* Free the hash data structure and entries */ - hashmap_free(&file_table, 1); + hashmap_free_entries(&file_table, struct file_similarity, entry); return renames; }