commit 91193f434a45f77d1f104294a417fece5fe73ff1
parent 3efedb0a67000b108745868851f80c108674ddfe
Author: Yersa Nordman <yersa@finwo.nl>
Date: Sun, 5 Mar 2023 00:23:57 +0100
Consistent compare_fn calling, fix segfaults
Diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/mindex.c b/src/mindex.c
@@ -22,6 +22,15 @@ struct mindex_t * mindex_init(int (*compare)(const void *a, const void *b, void
return mindex;
}
+static int mindex_compare_wrap(const void *a, const void *b, void *udata) {
+ struct mindex_t *mindex = udata;
+ return mindex->compare(
+ *(void**)a,
+ *(void**)b,
+ mindex->udata
+ );
+}
+
void mindex_set(struct mindex_t *mindex, void *item) {
// Check if the item is already in the list
@@ -50,7 +59,7 @@ void mindex_set(struct mindex_t *mindex, void *item) {
mindex->spare--;
// Sort the list
- sort_r(mindex->items, mindex->length, sizeof(void *), mindex->compare, mindex->udata);
+ sort_r(mindex->items, mindex->length, sizeof(void *), mindex_compare_wrap, mindex);
// Done
}