felipe Thu Feb 14 14:08:22 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/standard array.c
Log:
MFB: Fixed Bug #42838 (Wrong results in array_diff_uassoc)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.37.2.23&r2=1.308.2.21.2.37.2.24&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.21.2.37.2.23
php-src/ext/standard/array.c:1.308.2.21.2.37.2.24
--- php-src/ext/standard/array.c:1.308.2.21.2.37.2.23 Thu Feb 14 08:46:25 2008
+++ php-src/ext/standard/array.c Thu Feb 14 14:08:22 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.308.2.21.2.37.2.23 2008/02/14 08:46:25 dmitry Exp $ */
+/* $Id: array.c,v 1.308.2.21.2.37.2.24 2008/02/14 14:08:22 felipe Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -3442,13 +3442,14 @@
}
c = 1;
for (i = 1; i < arr_argc; i++) {
+ Bucket **ptr = ptrs[i];
if (behavior == DIFF_NORMAL) {
- while (*ptrs[i] && (0 < (c =
diff_data_compare_func(ptrs[0], ptrs[i] TSRMLS_CC)))) {
- ptrs[i]++;
+ while (*ptr && (0 < (c =
diff_data_compare_func(ptrs[0], ptr TSRMLS_CC)))) {
+ ptr++;
}
} else if (behavior & DIFF_ASSOC) { /* triggered also
when DIFF_KEY */
- while (*ptrs[i] && (0 < (c =
diff_key_compare_func(ptrs[0], ptrs[i] TSRMLS_CC)))) {
- ptrs[i]++;
+ while (*ptr && (0 != (c =
diff_key_compare_func(ptrs[0], ptr TSRMLS_CC)))) {
+ ptr++;
}
}
if (!c) {
@@ -3460,12 +3461,12 @@
} else if (behavior == DIFF_ASSOC) { /* only
when DIFF_ASSOC */
/* In this branch is execute only when
DIFF_ASSOC. If behavior == DIFF_KEY
* data comparison is not needed -
skipped. */
- if (*ptrs[i]) {
+ if (*ptr) {
if (data_compare_type ==
DIFF_COMP_DATA_USER) {
BG(user_compare_fci) =
*fci_data;
BG(user_compare_fci_cache) = *fci_data_cache;
}
- if
(diff_data_compare_func(ptrs[0], ptrs[i] TSRMLS_CC) != 0) {
+ if
(diff_data_compare_func(ptrs[0], ptr TSRMLS_CC) != 0) {
/* the data is not the
same */
c = -1;
if (key_compare_type ==
DIFF_COMP_KEY_USER) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php