cvs: php4 /ext/standard array.c

From: Date: Tue, 30 Jul 2002 22:54:12 +0000
Subject: cvs: php4 /ext/standard array.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-13056@lists.php.net to get a copy of this message
rodif_bl Tue Jul 30 18:54:12 2002 EDT Modified files: /php4/ext/standard array.c Log: fixed bugs 16063 and 16068 increased preformance of array_pop and array_shift Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.172 php4/ext/standard/array.c:1.173 --- php4/ext/standard/array.c:1.172 Mon Jul 8 03:33:22 2002 +++ php4/ext/standard/array.c Tue Jul 30 18:54:12 2002 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.172 2002/07/08 07:33:22 derick Exp $ */ +/* $Id: array.c,v 1.173 2002/07/30 22:54:12 rodif_bl Exp $ */ #include "php.h" #include "php_ini.h" @@ -1661,8 +1661,9 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end) { zval **stack, /* Input stack */ - **val; /* Value to be popped */ - HashTable *new_hash; /* New stack */ + **val; /* Value to be popped */ + char *key = NULL; + int key_len; /* Get the arguments and do error-checking */ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &stack) == FAILURE) { @@ -1689,10 +1690,8 @@ INIT_PZVAL(return_value); /* Delete the first or last value */ - new_hash = php_splice(Z_ARRVAL_PP(stack), (off_the_end) ? -1 : 0, 1, NULL, 0, NULL); - zend_hash_destroy(Z_ARRVAL_PP(stack)); - efree(Z_ARRVAL_PP(stack)); - Z_ARRVAL_PP(stack) = new_hash; + zend_hash_get_current_key_ex(Z_ARRVAL_PP(stack), &key, &key_len, &key_len, 0, NULL); + zend_hash_del_key_or_index(Z_ARRVAL_PP(stack), key, key_len, key_len, (key) ? HASH_DEL_KEY : HASH_DEL_INDEX); } /* }}} */

« previous php.cvs (#13056) next »