From b33629f21253b106157e8a3f24b376a4aadd92f0 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Mon, 19 Jan 2015 03:32:28 -0500 Subject: [PATCH] Only use explicit ">" in sorting algo --- Zend/zend_sort.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Zend/zend_sort.c b/Zend/zend_sort.c index 78ed0ebb5fc..cdf19f9d246 100644 --- a/Zend/zend_sort.c +++ b/Zend/zend_sort.c @@ -98,8 +98,8 @@ static inline void zend_sort_2(void *a, void *b, compare_func_t cmp, swap_func_t /* }}} */ static inline void zend_sort_3(void *a, void *b, void *c, compare_func_t cmp, swap_func_t swp) /* {{{ */ { - if (cmp(a, b) <= 0) { - if (cmp(b, c) <= 0) { + if (!(cmp(a, b) > 0)) { + if (!(cmp(b, c) > 0)) { return; } swp(b, c); @@ -108,7 +108,7 @@ static inline void zend_sort_3(void *a, void *b, void *c, compare_func_t cmp, sw } return; } - if (cmp(c, b) <= 0) { + if (!(cmp(c, b) > 0)) { swp(a, c); return; } @@ -178,15 +178,16 @@ ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_fun char *i, *j, *k; char *start = (char *)base; char *end = start + (nmemb * siz); + size_t siz2= siz + siz; char *sentry = start + (6 * siz); for (i = start + siz; i < sentry; i += siz) { j = i - siz; - if (cmp(j, i) <= 0) { + if (!(cmp(j, i) > 0)) { continue; } while (j != start) { j -= siz; - if (cmp(j, i) <= 0) { + if (!(cmp(j, i) > 0)) { j += siz; break; } @@ -197,14 +198,14 @@ ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_fun } for (i = sentry; i < end; i += siz) { j = i - siz; - if (cmp(j, i) <= 0) { + if (!(cmp(j, i) > 0)) { continue; } do { - j -= siz * 2; - if (cmp(j, i) <= 0) { + j -= siz2; + if (!(cmp(j, i) > 0)) { j += siz; - if (cmp(j, i) <= 0) { + if (!(cmp(j, i) > 0)) { j += siz; } break;