diff options
author | Xinchen Hui <laruence@php.net> | 2013-07-21 21:07:19 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2013-07-21 21:07:19 +0800 |
commit | 3380de9774551964af976aa48328e7e6f9bd78ff (patch) | |
tree | a4ad712f31a2df0c84f01f75d19b745dcab69c9c /ext/standard/array.c | |
parent | cc91fbe986c208c40b50af8154373693d4bd7c9b (diff) | |
download | php-git-3380de9774551964af976aa48328e7e6f9bd78ff.tar.gz |
Fixed bug #65304 (Use of max int in array_sum)
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index e218dc0e49..0eaca16618 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4037,17 +4037,7 @@ PHP_FUNCTION(array_sum) entry_n = **entry; zval_copy_ctor(&entry_n); convert_scalar_to_number(&entry_n TSRMLS_CC); - - if (Z_TYPE(entry_n) == IS_LONG && Z_TYPE_P(return_value) == IS_LONG) { - dval = (double)Z_LVAL_P(return_value) + (double)Z_LVAL(entry_n); - if ( (double)LONG_MIN <= dval && dval <= (double)LONG_MAX ) { - Z_LVAL_P(return_value) += Z_LVAL(entry_n); - continue; - } - } - convert_to_double(return_value); - convert_to_double(&entry_n); - Z_DVAL_P(return_value) += Z_DVAL(entry_n); + fast_add_function(return_value, return_value, &entry_n TSRMLS_CC); } } /* }}} */ |