diff options
| author | Junio C Hamano <gitster@pobox.com> | 2017-08-11 13:27:01 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2017-08-11 13:27:01 -0700 |
| commit | 55c965f3a27b3a36f84c56b6eba8ac5c95ff558a (patch) | |
| tree | d893a0f0244d84125b40cd29eb45125b6cd0c0f5 /patch-ids.c | |
| parent | 3ab01ac3f7681a294a09b42b9b014dc48a9aee22 (diff) | |
| parent | 6815d1143150f422fe2ad1a7ddcc6205bef006ae (diff) | |
| download | git-55c965f3a27b3a36f84c56b6eba8ac5c95ff558a.tar.gz | |
Merge branch 'sb/hashmap-cleanup'
Many uses of comparision callback function the hashmap API uses
cast the callback function type when registering it to
hashmap_init(), which defeats the compile time type checking when
the callback interface changes (e.g. gaining more parameters).
The callback implementations have been updated to take "void *"
pointers and cast them to the type they expect instead.
* sb/hashmap-cleanup:
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
name-hash.c: drop hashmap_cmp_fn cast
submodule-config.c: drop hashmap_cmp_fn cast
remote.c: drop hashmap_cmp_fn cast
patch-ids.c: drop hashmap_cmp_fn cast
convert/sub-process: drop cast to hashmap_cmp_fn
config.c: drop hashmap_cmp_fn cast
builtin/describe: drop hashmap_cmp_fn cast
builtin/difftool.c: drop hashmap_cmp_fn cast
attr.c: drop hashmap_cmp_fn cast
Diffstat (limited to 'patch-ids.c')
| -rw-r--r-- | patch-ids.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/patch-ids.c b/patch-ids.c index b4166b0f38..7a583b3011 100644 --- a/patch-ids.c +++ b/patch-ids.c @@ -35,11 +35,16 @@ int commit_patch_id(struct commit *commit, struct diff_options *options, * the side of safety. The actual value being negative does not have * any significance; only that it is non-zero matters. */ -static int patch_id_cmp(struct diff_options *opt, - struct patch_id *a, - struct patch_id *b, +static int patch_id_cmp(const void *cmpfn_data, + const void *entry, + const void *entry_or_key, const void *unused_keydata) { + /* NEEDSWORK: const correctness? */ + struct diff_options *opt = (void *)cmpfn_data; + struct patch_id *a = (void *)entry; + struct patch_id *b = (void *)entry_or_key; + if (is_null_oid(&a->patch_id) && commit_patch_id(a->commit, opt, &a->patch_id, 0)) return error("Could not get patch ID for %s", @@ -58,8 +63,7 @@ int init_patch_ids(struct patch_ids *ids) ids->diffopts.detect_rename = 0; DIFF_OPT_SET(&ids->diffopts, RECURSIVE); diff_setup_done(&ids->diffopts); - hashmap_init(&ids->patches, (hashmap_cmp_fn)patch_id_cmp, - &ids->diffopts, 256); + hashmap_init(&ids->patches, patch_id_cmp, &ids->diffopts, 256); return 0; } |
