aboutsummaryrefslogtreecommitdiffstats
path: root/common/list.c
diff options
context:
space:
mode:
authorLibravatar taiyu <taiyu.len@gmail.com>2015-11-24 00:30:02 -0800
committerLibravatar taiyu <taiyu.len@gmail.com>2015-11-24 00:30:02 -0800
commit9d50f88ceffc44f5ce0b83cc060bbae649ce898b (patch)
tree894c6b75ae0f5ec4477d703d9c4ad8eec1b67cc4 /common/list.c
parentMerge pull request #247 from sce/handle_bindsym_duplicates (diff)
downloadsway-9d50f88ceffc44f5ce0b83cc060bbae649ce898b.tar.gz
sway-9d50f88ceffc44f5ce0b83cc060bbae649ce898b.tar.zst
sway-9d50f88ceffc44f5ce0b83cc060bbae649ce898b.zip
fix list sorting
Diffstat (limited to 'common/list.c')
-rw-r--r--common/list.c8
1 files changed, 7 insertions, 1 deletions
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) {
50 } 50 }
51} 51}
52 52
53// pass the pointer of the object we care about to the comparison function
54static int list_cmp(const void *l, const void *r, void *_cmp) {
55 int (*cmp)(const void *, const void *) = _cmp;
56 return cmp(*(void**)l, *(void**)r);
57}
58
53void list_sort(list_t *list, int compare(const void *left, const void *right)) { 59void list_sort(list_t *list, int compare(const void *left, const void *right)) {
54 qsort(list->items, list->length, sizeof(void *), compare); 60 qsort_r(list->items, list->length, sizeof(void *), list_cmp, compare);
55} 61}
56 62
57int list_seq_find(list_t *list, int compare(const void *item, const void *data), const void *data) { 63int list_seq_find(list_t *list, int compare(const void *item, const void *data), const void *data) {