dmitry Mon Sep 12 05:58:50 2005 EDT
Modified files: (Branch: PHP_5_1)
/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.308.2.3&r2=1.308.2.4&ty=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.3
php-src/ext/standard/array.c:1.308.2.4
--- php-src/ext/standard/array.c:1.308.2.3 Thu Sep 1 08:00:36 2005
+++ php-src/ext/standard/array.c Mon Sep 12 05:58:50 2005
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.308.2.3 2005/09/01 12:00:36 dmitry Exp $ */
+/* $Id: array.c,v 1.308.2.4 2005/09/12 09:58:50 dmitry Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -4117,7 +4117,7 @@
PHP_FUNCTION(array_filter)
{
zval **input, **callback = NULL;
- zval *array;
+ zval *array, *func = NULL;
zval **operand;
zval **args[1];
zval *retval = NULL;
@@ -4137,10 +4137,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;
@@ -4157,14 +4160,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