iliaa           Wed Sep  6 17:25:58 2006 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/standard/tests/array   bug38464.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/standard       array.c 
  Log:
  Fixed bug #38464 (array_count_values() mishandles numeric strings).
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.237&r2=1.2027.2.547.2.238&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.237 php-src/NEWS:1.2027.2.547.2.238
--- php-src/NEWS:1.2027.2.547.2.237     Wed Sep  6 06:37:41 2006
+++ php-src/NEWS        Wed Sep  6 17:25:57 2006
@@ -6,7 +6,8 @@
 - Fixed bug #38700 (SoapClient::__getTypes never returns). (Dmitry)
 - Fixed bug #38693 (curl_multi_add_handle() set curl handle to null). (Ilia)
 - Fixed bug #38661 (mixed-case URL breaks url-wrappers). (Ilia)
-
+- Fixed bug #38464 (array_count_values() mishandles numeric strings). 
+  (php_lists at realplain dot com, Ilia)
 
 31 Aug 2006, PHP 5.2.0RC3
 - Updated PCRE to version 6.7. (Ilia)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.9&r2=1.308.2.21.2.10&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.21.2.9 
php-src/ext/standard/array.c:1.308.2.21.2.10
--- php-src/ext/standard/array.c:1.308.2.21.2.9 Sun Jul 30 03:31:18 2006
+++ php-src/ext/standard/array.c        Wed Sep  6 17:25:57 2006
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.308.2.21.2.9 2006/07/30 03:31:18 andrei Exp $ */
+/* $Id: array.c,v 1.308.2.21.2.10 2006/09/06 17:25:57 iliaa Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -2548,46 +2548,17 @@
                                                                         
(void**)&tmp) == FAILURE) {
                                zval *data;
                                MAKE_STD_ZVAL(data);
-                               Z_TYPE_P(data) = IS_LONG;
-                               Z_LVAL_P(data) = 1;
+                               ZVAL_LONG(data, 1);
                                
zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_PP(entry), &data, 
sizeof(data), NULL);
                        } else {
                                Z_LVAL_PP(tmp)++;
                        }
                } else if (Z_TYPE_PP(entry) == IS_STRING) {
-                       /* make sure our array does not end up with numeric 
string keys
-                        * but don't touch those strings that start with 0 */
-                       if (!(Z_STRLEN_PP(entry) > 1 && Z_STRVAL_PP(entry)[0] 
== '0') && is_numeric_string(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry), NULL, 
NULL, 0) == IS_LONG) {
-                               zval tmp_entry;
-                               
-                               tmp_entry = **entry;
-                               zval_copy_ctor(&tmp_entry);
-
-                               convert_to_long(&tmp_entry);
-
-                               if 
(zend_hash_index_find(Z_ARRVAL_P(return_value), 
-                                                                               
 Z_LVAL(tmp_entry), 
-                                                                               
 (void**)&tmp) == FAILURE) {
-                                       zval *data;
-                                       MAKE_STD_ZVAL(data);
-                                       Z_TYPE_P(data) = IS_LONG;
-                                       Z_LVAL_P(data) = 1;
-                                       
zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL(tmp_entry), &data, 
sizeof(data), NULL);
-                               } else {
-                                       Z_LVAL_PP(tmp)++;
-                               }
-                               
-                               zval_dtor(&tmp_entry);
-                               zend_hash_move_forward_ex(myht, &pos);
-                               continue;
-                       }
-               
-                       if (zend_hash_find(Z_ARRVAL_P(return_value), 
Z_STRVAL_PP(entry), Z_STRLEN_PP(entry)+1, (void**)&tmp) == FAILURE) {
+                       if (zend_symtable_find(Z_ARRVAL_P(return_value), 
Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, (void**)&tmp) == FAILURE) {
                                zval *data;
                                MAKE_STD_ZVAL(data);
-                               Z_TYPE_P(data) = IS_LONG;
-                               Z_LVAL_P(data) = 1;
-                               zend_hash_update(Z_ARRVAL_P(return_value), 
Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &data, sizeof(data), NULL);
+                               ZVAL_LONG(data, 1);
+                               zend_symtable_update(Z_ARRVAL_P(return_value), 
Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &data, sizeof(data), NULL);
                        } else {
                                Z_LVAL_PP(tmp)++;
                        }

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/bug38464.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/array/bug38464.phpt
+++ php-src/ext/standard/tests/array/bug38464.phpt

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

Reply via email to