]> granicus.if.org Git - php/commitdiff
Fix ext/standard build with the recent fixes to array.c
authorKalle Sommer Nielsen <kalle@php.net>
Sat, 30 Jul 2016 15:52:57 +0000 (17:52 +0200)
committerKalle Sommer Nielsen <kalle@php.net>
Sat, 30 Jul 2016 15:52:57 +0000 (17:52 +0200)
This solution might not be canon, but it works by re-using _php_math_round() from math.c, since round() is not available
in the C++98 Standard Library on Windows at least. At the same
time it seems like the symbol export for it was missing from
php_math.h.

ext/standard/array.c
ext/standard/php_math.h

index 38e275ae834c9fee55b34fd4d647a4a4131403d7..9bc17acffb67a1e48869e6d1da281e085c2ba3b6 100644 (file)
@@ -45,6 +45,7 @@
 #include "basic_functions.h"
 #include "php_string.h"
 #include "php_rand.h"
+#include "php_math.h"
 #include "zend_smart_str.h"
 #include "zend_bitset.h"
 #include "ext/spl/spl_array.h"
@@ -2141,7 +2142,7 @@ PHP_FUNCTION(array_fill_keys)
                        php_error_docref(NULL, E_WARNING, "The supplied range exceeds the maximum array size: start=%0.0f end=%0.0f", end, start); \
                        RETURN_FALSE; \
                } \
-               size = (uint32_t)round(__calc_size); \
+               size = (uint32_t)_php_math_round(__calc_size, 0, PHP_ROUND_HALF_UP); \
                array_init_size(return_value, size); \
                zend_hash_real_init(Z_ARRVAL_P(return_value), 1); \
        } while (0)
@@ -5060,6 +5061,7 @@ PHP_FUNCTION(array_rand)
        zend_bitset bitset;
        int negative_bitset = 0;
        uint32_t bitset_len;
+       ALLOCA_FLAG(use_heap)
 
        if (zend_parse_parameters(ZEND_NUM_ARGS(), "a|l", &input, &num_req) == FAILURE) {
                return;
@@ -5113,7 +5115,6 @@ PHP_FUNCTION(array_rand)
                num_req = num_avail - num_req;
        }
 
-       ALLOCA_FLAG(use_heap);
        bitset_len = zend_bitset_len(num_avail);
        bitset = ZEND_BITSET_ALLOCA(bitset_len, use_heap);
        zend_bitset_clear(bitset, bitset_len);
index 406fd49dcd9c02166f0ac7a9bdf53d149afc026d..62c089bf480702724c4fe63a927d508803685835 100644 (file)
@@ -22,6 +22,7 @@
 #ifndef PHP_MATH_H
 #define PHP_MATH_H
 
+PHPAPI double _php_math_round(double, int, int);
 PHPAPI zend_string *_php_math_number_format(double, int, char, char);
 PHPAPI zend_string *_php_math_number_format_ex(double, int, char *, size_t, char *, size_t);
 PHPAPI zend_string * _php_math_longtobase(zval *arg, int base);