From: Dmitry Stogov Date: Fri, 19 Dec 2014 10:07:35 +0000 (+0300) Subject: don't sort array with single element X-Git-Tag: PRE_PHP7_REMOVALS~36^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f7b6518d10d4a0ee09b49957df6e048ec622fa25;p=php don't sort array with single element --- diff --git a/ext/standard/array.c b/ext/standard/array.c index 041c68558e..b985b88cd9 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3420,10 +3420,12 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int *list++ = *p; } ZVAL_UNDEF(&list->val); - if (behavior == INTERSECT_NORMAL) { - zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), intersect_data_compare_func); - } else if (behavior & INTERSECT_ASSOC) { /* triggered also when INTERSECT_KEY */ - zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), intersect_key_compare_func); + if (hash->nNumOfElements > 1) { + if (behavior == INTERSECT_NORMAL) { + zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), intersect_data_compare_func); + } else if (behavior & INTERSECT_ASSOC) { /* triggered also when INTERSECT_KEY */ + zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), intersect_key_compare_func); + } } } @@ -3838,10 +3840,12 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ *list++ = *p; } ZVAL_UNDEF(&list->val); - if (behavior == DIFF_NORMAL) { - zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), diff_data_compare_func); - } else if (behavior & DIFF_ASSOC) { /* triggered also when DIFF_KEY */ - zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), diff_key_compare_func); + if (hash->nNumOfElements > 1) { + if (behavior == DIFF_NORMAL) { + zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), diff_data_compare_func); + } else if (behavior & DIFF_ASSOC) { /* triggered also when DIFF_KEY */ + zend_qsort((void *) lists[i], hash->nNumOfElements, sizeof(Bucket), diff_key_compare_func); + } } }