cvs: php-src /ext/spl spl_array.c

From: Date: Tue, 13 Apr 2004 19:06:16 +0000
Subject: cvs: php-src /ext/spl spl_array.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-27049@lists.php.net to get a copy of this message
helly Tue Apr 13 15:06:16 2004 EDT Modified files: /php-src/ext/spl spl_array.c Log: Bugfix #27979 http://cvs.php.net/diff.php/php-src/ext/spl/spl_array.c?r1=1.37&r2=1.38&ty=u Index: php-src/ext/spl/spl_array.c diff -u php-src/ext/spl/spl_array.c:1.37 php-src/ext/spl/spl_array.c:1.38 --- php-src/ext/spl/spl_array.c:1.37 Tue Apr 13 12:21:24 2004 +++ php-src/ext/spl/spl_array.c Tue Apr 13 15:06:16 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_array.c,v 1.37 2004/04/13 16:21:24 stas Exp $ */ +/* $Id: spl_array.c,v 1.38 2004/04/13 19:06:16 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -328,18 +328,26 @@ /* exceptions do not work yet php_set_error_handling(EH_THROW, zend_exception_get_default() TSRMLS_CC);*/ + intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); + if (ZEND_NUM_ARGS() > 1 || zend_get_parameters_ex(1, &array) == FAILURE) { WRONG_PARAM_COUNT; } - if (!HASH_OF(*array)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object, using empty array instead"); - php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); - return; + if (Z_TYPE_PP(array) == IS_OBJECT && (Z_OBJ_HT_PP(array) == &spl_handler_ArrayObject || Z_OBJ_HT_PP(array) == &spl_handler_ArrayIterator)) { + spl_array_object *other = (spl_array_object*)zend_object_store_get_object(*array TSRMLS_CC); + zval_dtor(intern->array); + FREE_ZVAL(intern->array); + intern->array = other->array; + } else { + if (!HASH_OF(*array)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object, using empty array instead"); + php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); + return; + } + zval_dtor(intern->array); + FREE_ZVAL(intern->array); + intern->array = *array; } - intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); - zval_dtor(intern->array); - FREE_ZVAL(intern->array); - intern->array = *array; ZVAL_ADDREF(intern->array); zend_hash_internal_pointer_reset_ex(HASH_OF(intern->array), &intern->pos);

« previous php.cvs (#27049) next »