I don't think using 0 as the initial value by default is a good idea.
because array_reduce() can take any kind of element other than integer.

<?php
$a = array("a", "b", "c");
$lambda = create_function('$a, $b', 'return $a . $b;');
var_dump(array_reduce($a, $lambda));
?>

[Before this patch]
string(3) "abc"

[After this patch]
string(4) "0abc"

Those results imply a significant BC break. I don't know what *is* the 
correct behaviour though.

Moriyoshi

"Ilia Alshanetsky" <[EMAIL PROTECTED]> wrote:

> iliaa         Fri Aug  8 19:50:36 2003 EDT
> 
>   Modified files:              
>     /php-src/ext/standard     array.c 
>   Log:
>   Fixed bug #24980 (array_reduce() uses first element as default running
>   total).
>   Fixed memory leak that can be replicated using the function example on 
>   http://www.php.net/array_reduce
>   
>   
> Index: php-src/ext/standard/array.c
> diff -u php-src/ext/standard/array.c:1.238 php-src/ext/standard/array.c:1.239
> --- php-src/ext/standard/array.c:1.238        Tue Aug  5 06:29:03 2003
> +++ php-src/ext/standard/array.c      Fri Aug  8 19:50:36 2003
> @@ -21,7 +21,7 @@
>     +----------------------------------------------------------------------+
>  */
>  
> -/* $Id: array.c,v 1.238 2003/08/05 10:29:03 zeev Exp $ */
> +/* $Id: array.c,v 1.239 2003/08/08 23:50:36 iliaa Exp $ */
>  
>  #include "php.h"
>  #include "php_ini.h"
> @@ -3374,7 +3374,9 @@
>  
>       if (ZEND_NUM_ARGS() > 2) {
>               result = *initial;
> -             zval_add_ref(&result);
> +     } else {
> +             MAKE_STD_ZVAL(result);
> +             ZVAL_LONG(result, 0);
>       }
>  
>       /* (zval **)input points to an element of argument stack
> 
> 
> 
> -- 
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to