diff options
author | Ondřej Surý <ondrej@sury.org> | 2013-02-19 13:28:10 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2013-02-19 13:28:10 +0100 |
commit | 54098cf044025ec5965b8ea9c84750f9631d85b6 (patch) | |
tree | ed0ef32b379c0cdfe20fcafc5b27c4488732fe90 /Zend/zend_qsort.c | |
parent | 8572aeb0703107705fc7dde35961cd6a5f89c0c8 (diff) | |
download | php-upstream/5.5.0_alpha4.tar.gz |
Imported Upstream version 5.5.0~alpha4upstream/5.5.0_alpha4
Diffstat (limited to 'Zend/zend_qsort.c')
-rw-r--r-- | Zend/zend_qsort.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Zend/zend_qsort.c b/Zend/zend_qsort.c index bf179904e..128c48dfc 100644 --- a/Zend/zend_qsort.c +++ b/Zend/zend_qsort.c @@ -19,6 +19,7 @@ /* $Id$ */ #include "zend.h" +#include "zend_qsort.h" #include <limits.h> @@ -53,7 +54,7 @@ static void _zend_qsort_swap(void *a, void *b, size_t siz) } } -ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t compare TSRMLS_DC) +ZEND_API void zend_qsort_r(void *base, size_t nmemb, size_t siz, compare_r_func_t compare, void *arg TSRMLS_DC) { void *begin_stack[QSORT_STACK_SIZE]; void *end_stack[QSORT_STACK_SIZE]; @@ -80,10 +81,10 @@ ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t co seg2 = end; while (1) { - for (; seg1 < seg2 && compare(begin, seg1 TSRMLS_CC) > 0; + for (; seg1 < seg2 && compare(begin, seg1 TSRMLS_CC, arg) > 0; seg1 += siz); - for (; seg2 >= seg1 && compare(seg2, begin TSRMLS_CC) > 0; + for (; seg2 >= seg1 && compare(seg2, begin TSRMLS_CC, arg) > 0; seg2 -= siz); if (seg1 >= seg2) @@ -117,6 +118,11 @@ ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t co } } +ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t compare TSRMLS_DC) +{ + zend_qsort_r(base, nmemb, siz, (compare_r_func_t)compare, NULL TSRMLS_CC); +} + /* * Local Variables: * c-basic-offset: 4 |