From fc95c7c70ac7b7f908c0a58b83f19635bf57328f Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 21 Oct 2018 20:26:28 +0100 Subject: [PATCH] list: fix portability issues of list_sort() os BSD-based systems --- common/lib/list.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/common/lib/list.c b/common/lib/list.c index 57897ad53..39bb4a191 100644 --- a/common/lib/list.c +++ b/common/lib/list.c @@ -41,10 +41,14 @@ static int cmp_contains(const void *a, const void *b) { return a == b ? 0 : 1; } +#ifdef __APPLE__ +static int cmp_sort(void *thunk, const void *a, const void *b) { +#else static int cmp_sort(const void *a, const void *b, void *thunk) { +#endif cmp_cb_t cmp = (cmp_cb_t) thunk; - return cmp(*(void **) a, *(void **) b); + return cmp(*(const void **) a, *(const void **) b); } int list_init(struct list *l) @@ -193,7 +197,11 @@ void list_sort(struct list *l, cmp_cb_t cmp) assert(l->state == STATE_INITIALIZED); +#ifdef __APPLE__ + qsort_r(l->array, l->length, sizeof(void *), (void *) cmp, cmp_sort); +#else qsort_r(l->array, l->length, sizeof(void *), cmp_sort, (void *) cmp); +#endif pthread_mutex_unlock(&l->lock); }