summaryrefslogtreecommitdiff
path: root/Zend/zend_qsort.c
diff options
context:
space:
mode:
authorSterling Hughes <sterling@php.net>2002-05-13 14:38:42 +0000
committerSterling Hughes <sterling@php.net>2002-05-13 14:38:42 +0000
commitf796a26c8015e3b3c8ffd991980884f61e272154 (patch)
tree3da45fca9c4d1c30d5627c9c90484cc4cfdaf052 /Zend/zend_qsort.c
parent2260e1742d671a2b57b0d086faf87393a0460bef (diff)
downloadphp-git-f796a26c8015e3b3c8ffd991980884f61e272154.tar.gz
MFZE1
Diffstat (limited to 'Zend/zend_qsort.c')
-rw-r--r--Zend/zend_qsort.c39
1 files changed, 30 insertions, 9 deletions
diff --git a/Zend/zend_qsort.c b/Zend/zend_qsort.c
index eba5b55d9a..778333e792 100644
--- a/Zend/zend_qsort.c
+++ b/Zend/zend_qsort.c
@@ -16,6 +16,8 @@
+----------------------------------------------------------------------+
*/
+/* $Id$ */
+
#include "zend.h"
#include <limits.h>
@@ -24,20 +26,30 @@
static void _zend_qsort_swap(void *a, void *b, size_t siz)
{
+ register char *tmp_a_char;
+ register char *tmp_b_char;
+ register int *tmp_a_int;
+ register int *tmp_b_int;
register size_t i;
- register int t_i;
- register char t_c;
-
+ int t_i;
+ char t_c;
+
+ tmp_a_int = (int *) a;
+ tmp_b_int = (int *) b;
+
for (i = sizeof(int); i <= siz; i += sizeof(int)) {
- t_i = *(int *) a;
- *((int *) a)++ = *(int *) b;
- *((int *) b)++ = t_i;
+ t_i = *tmp_a_int;
+ *tmp_a_int++ = *tmp_b_int;
+ *tmp_b_int++ = t_i;
}
+ tmp_a_char = (char *) tmp_a_int;
+ tmp_b_char = (char *) tmp_b_int;
+
for (i = i - sizeof(int) + 1; i <= siz; ++i) {
- t_c = *(char *) a;
- *((char *) a)++ = *(char *) b;
- *((char *) b)++ = t_c;
+ t_c = *tmp_a_char;
+ *tmp_a_char++ = *tmp_b_char;
+ *tmp_b_char++ = t_c;
}
}
@@ -104,3 +116,12 @@ ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t co
}
}
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ * vim600: fdm=marker
+ * vim: noet sw=4 ts=4
+ */