From 9d50f88ceffc44f5ce0b83cc060bbae649ce898b Mon Sep 17 00:00:00 2001
From: taiyu <taiyu.len@gmail.com>
Date: Tue, 24 Nov 2015 00:30:02 -0800
Subject: fix list sorting

---
 common/list.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'common')

diff --git a/common/list.c b/common/list.c
index 310296d8..d6f6f2ea 100644
--- a/common/list.c
+++ b/common/list.c
@@ -50,8 +50,14 @@ void list_cat(list_t *list, list_t *source) {
 	}
 }
 
+// pass the pointer of the object we care about to the comparison function
+static int list_cmp(const void *l, const void *r, void *_cmp) {
+	int (*cmp)(const void *, const void *) = _cmp;
+	return cmp(*(void**)l, *(void**)r);
+}
+
 void list_sort(list_t *list, int compare(const void *left, const void *right)) {
-	qsort(list->items, list->length, sizeof(void *), compare);
+	qsort_r(list->items, list->length, sizeof(void *), list_cmp, compare);
 }
 
 int list_seq_find(list_t *list, int compare(const void *item, const void *data), const void *data) {
-- 
cgit v1.2.3