From 3f5e21a83f525586d1ee5b1bcd04cc2e50350403 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Sat, 25 Oct 2014 01:38:30 +0300 Subject: Cleanup wayland renderer and plugin support. --- lib/list.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/list.c') diff --git a/lib/list.c b/lib/list.c index 918e830..993998f 100644 --- a/lib/list.c +++ b/lib/list.c @@ -79,15 +79,8 @@ list_grow(struct list *list, uint32_t step) void *tmp; uint32_t nsize = sizeof(struct bm_item*) * (list->allocated + step); - if (!list->items || !(tmp = realloc(list->items, nsize))) { - if (!(tmp = malloc(nsize))) - return false; - - if (list->items) { - memcpy(tmp, list->items, sizeof(struct bm_item*) * list->allocated); - free(list->items); - } - } + if (!(tmp = realloc(list->items, nsize))) + return false; list->items = tmp; list->allocated += step; @@ -136,9 +129,18 @@ list_remove_item_at(struct list *list, uint32_t index) bool list_remove_item(struct list *list, const void *item) { + assert(list && item); + uint32_t i; for (i = 0; i < list->count && list->items[i] != item; ++i); return list_remove_item_at(list, i); } +void +list_sort(struct list *list, int (*compar)(const void *a, const void *b)) +{ + assert(list && compar); + qsort(list->items, list->count, sizeof(void*), compar); +} + /* vim: set ts=8 sw=4 tw=0 :*/ -- cgit v1.2.3-70-g09d2