Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
string-list.c: avoid conversion from void * to function pointer
author
Beat Bolli
<dev+git@drbeat.li>
Mon, 9 Jul 2018 19:25:36 +0000
(21:25 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 9 Jul 2018 21:37:50 +0000
(14:37 -0700)
ISO C forbids the conversion of void pointers to function pointers.
Introduce a context struct that encapsulates the function pointer.
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
string-list.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
9ad3635
)
diff --git
a/string-list.c
b/string-list.c
index a0cf0cfe88ee38f35ec33662778ec1bd7036a127..771c4550980e24eb8bf9db14e27c49f983c1ed4b 100644
(file)
--- a/
string-list.c
+++ b/
string-list.c
@@
-224,18
+224,28
@@
struct string_list_item *string_list_append(struct string_list *list,
list->strdup_strings ? xstrdup(string) : (char *)string);
}
list->strdup_strings ? xstrdup(string) : (char *)string);
}
+/*
+ * Encapsulate the compare function pointer because ISO C99 forbids
+ * casting from void * to a function pointer and vice versa.
+ */
+struct string_list_sort_ctx
+{
+ compare_strings_fn cmp;
+};
+
static int cmp_items(const void *a, const void *b, void *ctx)
{
static int cmp_items(const void *a, const void *b, void *ctx)
{
-
compare_strings_fn cmp
= ctx;
+
struct string_list_sort_ctx *sort_ctx
= ctx;
const struct string_list_item *one = a;
const struct string_list_item *two = b;
const struct string_list_item *one = a;
const struct string_list_item *two = b;
- return cmp(one->string, two->string);
+ return
sort_ctx->
cmp(one->string, two->string);
}
void string_list_sort(struct string_list *list)
{
}
void string_list_sort(struct string_list *list)
{
- QSORT_S(list->items, list->nr, cmp_items,
- list->cmp ? list->cmp : strcmp);
+ struct string_list_sort_ctx sort_ctx = {list->cmp ? list->cmp : strcmp};
+
+ QSORT_S(list->items, list->nr, cmp_items, &sort_ctx);
}
struct string_list_item *unsorted_string_list_lookup(struct string_list *list,
}
struct string_list_item *unsorted_string_list_lookup(struct string_list *list,