felipe                                   Mon, 01 Nov 2010 17:16:47 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=305011

Log:
- Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4)

Bug: http://bugs.php.net/47643 (Assigned) array_diff() takes over 3000 times 
longer than php 5.2.4
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/array.c
    U   php/php-src/trunk/ext/standard/array.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-11-01 15:09:00 UTC (rev 305010)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-11-01 17:16:47 UTC (rev 305011)
@@ -160,6 +160,8 @@
 - Fixed bug #49215 (make fails on glob_wrapper). (Felipe)
 - Fixed bug #48831 (php -i has different output to php --ini). (Richard,
   Pierre)
+- Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4).
+  (Felipe)
 - Fixed bug #45921 (Can't initialize character set hebrew). (Andrey)
 - Fixed bug #44248 (RFC2616 transgression while HTTPS request through proxy
   with SoapClient object). (Dmitry)

Modified: php/php-src/branches/PHP_5_3/ext/standard/array.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/array.c   2010-11-01 15:09:00 UTC 
(rev 305010)
+++ php/php-src/branches/PHP_5_3/ext/standard/array.c   2010-11-01 17:16:47 UTC 
(rev 305011)
@@ -3557,8 +3557,8 @@
                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)))) {

Modified: php/php-src/trunk/ext/standard/array.c
===================================================================
--- php/php-src/trunk/ext/standard/array.c      2010-11-01 15:09:00 UTC (rev 
305010)
+++ php/php-src/trunk/ext/standard/array.c      2010-11-01 17:16:47 UTC (rev 
305011)
@@ -3561,8 +3561,8 @@
                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)))) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to