stas            Mon Mar 12 00:07:00 2001 EDT

  Modified files:              
    /php4/ext/standard  array.c 
  Log:
  Use hash position with array_flip
  
  
Index: php4/ext/standard/array.c
diff -u php4/ext/standard/array.c:1.99 php4/ext/standard/array.c:1.100
--- php4/ext/standard/array.c:1.99      Sun Mar 11 19:10:15 2001
+++ php4/ext/standard/array.c   Mon Mar 12 00:07:00 2001
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.99 2001/03/12 03:10:15 andrei Exp $ */
+/* $Id: array.c,v 1.100 2001/03/12 08:07:00 stas Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -2173,8 +2173,10 @@
        zval **array, **entry, *data;
        HashTable *target_hash;
        char *string_key;
+       ulong str_key_len;
        ulong num_key;
-       
+       HashPosition pos;
+                                       
        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
@@ -2187,13 +2189,13 @@
        
        array_init(return_value);
 
-       zend_hash_internal_pointer_reset(target_hash);
-       while (zend_hash_get_current_data(target_hash, (void **)&entry) == SUCCESS) {
+       zend_hash_internal_pointer_reset_ex(target_hash, &pos);
+       while (zend_hash_get_current_data_ex(target_hash, (void **)&entry, &pos) == 
+SUCCESS) {
                MAKE_STD_ZVAL(data);
-               switch (zend_hash_get_current_key(target_hash, &string_key, &num_key, 
1)) {
+               switch (zend_hash_get_current_key_ex(target_hash, &string_key, 
+&str_key_len, &num_key, 1, &pos)) {
                        case HASH_KEY_IS_STRING:
                                Z_STRVAL_P(data) = string_key;
-                               Z_STRLEN_P(data) = strlen(string_key);
+                               Z_STRLEN_P(data) = str_key_len;
                                Z_TYPE_P(data) = IS_STRING;
                                break;
                        case HASH_KEY_IS_LONG:
@@ -2211,7 +2213,7 @@
                        php_error(E_WARNING, "Can only flip STRING and INTEGER 
values!");
                }
        
-               zend_hash_move_forward(target_hash);
+               zend_hash_move_forward_ex(target_hash, &pos);
        }
 }
 /* }}} */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to