summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2010-11-01 17:16:47 +0000
committerFelipe Pena <felipe@php.net>2010-11-01 17:16:47 +0000
commitf4d15d822667ef0d26f41d7199ad99e7becc2543 (patch)
tree576ab74ee93cf8902b9d807b5ab38f6dc815c338 /ext/standard/array.c
parent231da1a5cb38e4ed9ab4067a56816488c1cd64b4 (diff)
downloadphp-git-f4d15d822667ef0d26f41d7199ad99e7becc2543.tar.gz
- Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4)
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 501ced13cf..06d296e9e9 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -3557,8 +3557,8 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_
for (i = 1; i < arr_argc; i++) {
Bucket **ptr = ptrs[i];
if (behavior == DIFF_NORMAL) {
- while (*ptr && (0 < (c = diff_data_compare_func(ptrs[0], ptr TSRMLS_CC)))) {
- ptr++;
+ while (*ptrs[i] && (0 < (c = diff_data_compare_func(ptrs[0], ptrs[i] TSRMLS_CC)))) {
+ ptrs[i]++;
}
} else if (behavior & DIFF_ASSOC) { /* triggered also when DIFF_KEY */
while (*ptr && (0 != (c = diff_key_compare_func(ptrs[0], ptr TSRMLS_CC)))) {