summaryrefslogtreecommitdiff
path: root/Zend/zend_llist.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_llist.c')
-rw-r--r--Zend/zend_llist.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c
index 1634327921..737e50d237 100644
--- a/Zend/zend_llist.c
+++ b/Zend/zend_llist.c
@@ -21,7 +21,7 @@
#include "zend.h"
#include "zend_llist.h"
-#include "zend_qsort.h"
+#include "zend_sort.h"
ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent)
{
@@ -33,7 +33,6 @@ ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor
l->persistent = persistent;
}
-
ZEND_API void zend_llist_add_element(zend_llist *l, void *element)
{
zend_llist_element *tmp = pemalloc(sizeof(zend_llist_element)+l->size-1, l->persistent);
@@ -186,6 +185,14 @@ ZEND_API void zend_llist_apply(zend_llist *l, llist_apply_func_t func)
}
}
+static void zend_llist_swap(zend_llist_element **p, zend_llist_element **q)
+{
+ zend_llist_element *t;
+ t = *p;
+ *p = *q;
+ *q = t;
+}
+
ZEND_API void zend_llist_sort(zend_llist *l, llist_compare_func_t comp_func)
{
size_t i;
@@ -205,7 +212,8 @@ ZEND_API void zend_llist_sort(zend_llist *l, llist_compare_func_t comp_func)
*ptr++ = element;
}
- zend_qsort(elements, l->count, sizeof(zend_llist_element *), (compare_func_t) comp_func);
+ zend_sort(elements, l->count, sizeof(zend_llist_element *),
+ (compare_func_t) comp_func, (swap_func_t) zend_llist_swap);
l->head = elements[0];
elements[0]->prev = NULL;