dmitry Mon Sep 12 05:59:13 2005 EDT Modified files: (Branch: PHP_5_0) /php-src/ext/standard array.c Log: Additinal fix for bug #34277 (array_filter() crashes with references and objects) http://cvs.php.net/diff.php/php-src/ext/standard/array.c?r1=1.266.2.25&r2=1.266.2.26&ty=u Index: php-src/ext/standard/array.c diff -u php-src/ext/standard/array.c:1.266.2.25 php-src/ext/standard/array.c:1.266.2.26 --- php-src/ext/standard/array.c:1.266.2.25 Thu Sep 1 08:01:01 2005 +++ php-src/ext/standard/array.c Mon Sep 12 05:59:12 2005 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.266.2.25 2005/09/01 12:01:01 dmitry Exp $ */ +/* $Id: array.c,v 1.266.2.26 2005/09/12 09:59:12 dmitry Exp $ */ #include "php.h" #include "php_ini.h" @@ -3975,7 +3975,7 @@ PHP_FUNCTION(array_filter) { zval **input, **callback = NULL; - zval *array; + zval *array, *func = NULL; zval **operand; zval **args[1]; zval *retval = NULL; @@ -3995,10 +3995,13 @@ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first argument should be an array"); return; } + if (callback) { + func = *callback; + } array = *input; if (ZEND_NUM_ARGS() > 1) { - if (!zend_is_callable(*callback, 0, &callback_name)) { + if (!zend_is_callable(func, 0, &callback_name)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "The second argument, '%s', should be a valid callback", callback_name); efree(callback_name); return; @@ -4015,14 +4018,14 @@ zend_hash_get_current_data_ex(Z_ARRVAL_P(array), (void **)&operand, &pos) == SUCCESS; zend_hash_move_forward_ex(Z_ARRVAL_P(array), &pos)) { - if (callback) { + if (func) { zend_fcall_info fci; args[0] = operand; fci.size = sizeof(fci); fci.function_table = EG(function_table); - fci.function_name = *callback; + fci.function_name = func; fci.symbol_table = NULL; fci.object_pp = NULL; fci.retval_ptr_ptr = &retval;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php