From: Jani Taskinen Date: Wed, 6 Feb 2008 19:07:36 +0000 (+0000) Subject: MFH:- Fixed bug in handling arrays which caused the original array being modified... X-Git-Tag: php-5.2.6RC1~94 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c717b4178461d7c5457f3afc4045e62018976ddd;p=php MFH:- Fixed bug in handling arrays which caused the original array being modified too. --- diff --git a/ext/filter/filter.c b/ext/filter/filter.c index bc2cd3a09c..c2c097759a 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -453,15 +453,16 @@ static void php_zval_filter_recursive(zval **value, long filter, long flags, zva for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(value), &pos); zend_hash_get_current_data_ex(Z_ARRVAL_PP(value), (void **) &element, &pos) == SUCCESS; - zend_hash_move_forward_ex(Z_ARRVAL_PP(value), &pos)) { - - if (Z_TYPE_PP(element) == IS_ARRAY) { - Z_ARRVAL_PP(element)->nApplyCount++; - php_zval_filter_recursive(element, filter, flags, options, charset, copy TSRMLS_CC); - Z_ARRVAL_PP(element)->nApplyCount--; - } else { - php_zval_filter(element, filter, flags, options, charset, copy TSRMLS_CC); - } + zend_hash_move_forward_ex(Z_ARRVAL_PP(value), &pos) + ) { + SEPARATE_ZVAL_IF_NOT_REF(element); + if (Z_TYPE_PP(element) == IS_ARRAY) { + Z_ARRVAL_PP(element)->nApplyCount++; + php_zval_filter_recursive(element, filter, flags, options, charset, copy TSRMLS_CC); + Z_ARRVAL_PP(element)->nApplyCount--; + } else { + php_zval_filter(element, filter, flags, options, charset, copy TSRMLS_CC); + } } } else { php_zval_filter(value, filter, flags, options, charset, copy TSRMLS_CC);