diff options
| author | Sterling Hughes <sterling@php.net> | 2002-05-13 14:38:42 +0000 |
|---|---|---|
| committer | Sterling Hughes <sterling@php.net> | 2002-05-13 14:38:42 +0000 |
| commit | f796a26c8015e3b3c8ffd991980884f61e272154 (patch) | |
| tree | 3da45fca9c4d1c30d5627c9c90484cc4cfdaf052 /Zend/zend_qsort.c | |
| parent | 2260e1742d671a2b57b0d086faf87393a0460bef (diff) | |
| download | php-git-f796a26c8015e3b3c8ffd991980884f61e272154.tar.gz | |
MFZE1
Diffstat (limited to 'Zend/zend_qsort.c')
| -rw-r--r-- | Zend/zend_qsort.c | 39 |
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 + */ |
