summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2015-01-19 03:32:28 -0500
committerXinchen Hui <laruence@php.net>2015-01-19 03:32:28 -0500
commitb33629f21253b106157e8a3f24b376a4aadd92f0 (patch)
treefa1f330606524e16842c99cbb303d6a7b76fdcb7
parent0bf9326512948f3c44dc33ff1b6b5613649d5761 (diff)
downloadphp-git-b33629f21253b106157e8a3f24b376a4aadd92f0.tar.gz
Only use explicit ">" in sorting algo
-rw-r--r--Zend/zend_sort.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/Zend/zend_sort.c b/Zend/zend_sort.c
index 78ed0ebb5f..cdf19f9d24 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;