Skip to content

Commit e0d4903

Browse files
committed
force-use int64
1 parent cec7b77 commit e0d4903

File tree

4 files changed

+10
-12
lines changed

4 files changed

+10
-12
lines changed

ext/random/php_random.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ typedef struct _php_random_engine_algo {
178178
PHPAPI const php_random_engine_algo *php_random_engine_get_default_algo(void);
179179
PHPAPI void *php_random_engine_get_default_state(void);
180180

181-
PHPAPI zend_long php_random_engine_range(const php_random_engine_algo *algo, void *state, zend_long min, zend_long max, bool *rng_unsafe);
181+
PHPAPI int64_t php_random_engine_range(const php_random_engine_algo *algo, void *state, zend_long min, zend_long max, bool *rng_unsafe);
182182

183183
extern zend_module_entry random_module_entry;
184184
# define phpext_random_ptr &random_module_entry

ext/random/random.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,7 @@ PHPAPI uint32_t php_mt_rand(void)
865865
/* {{{ php_mt_rand_range */
866866
PHPAPI zend_long php_mt_rand_range(zend_long min, zend_long max)
867867
{
868-
return php_random_engine_range(
868+
return (zend_long) php_random_engine_range(
869869
php_random_engine_get_default_algo(),
870870
php_random_engine_get_default_state(),
871871
min,
@@ -1077,18 +1077,16 @@ PHPAPI void *php_random_engine_get_default_state(void)
10771077
/* }}} */
10781078

10791079
/* {{{ php_random_engine_range */
1080-
PHPAPI zend_long php_random_engine_range(const php_random_engine_algo *algo, void *state, zend_long min, zend_long max, bool *engine_unsafe)
1080+
PHPAPI int64_t php_random_engine_range(const php_random_engine_algo *algo, void *state, zend_long min, zend_long max, bool *engine_unsafe)
10811081
{
10821082
zend_ulong umax = max - min;
10831083

1084-
#if ZEND_ULONG_MAX > UINT32_MAX
1085-
/* user-land OR 64-bit RNG OR umax over 32-bit */
1086-
if (algo->static_generate_size == 0 || algo->static_generate_size > sizeof(uint32_t) || umax > UINT32_MAX) {
1087-
return (zend_long) rand_range64(algo, state, umax, engine_unsafe) + min;
1084+
/* (user-defined AND 64-bit ENV) OR 64-bit RNG OR umax over 32-bit range */
1085+
if ((algo->static_generate_size == 0 && sizeof(zend_long) > sizeof(uint32_t)) || algo->static_generate_size > sizeof(uint32_t) || umax > UINT32_MAX) {
1086+
return rand_range64(algo, state, umax, engine_unsafe) + min;
10881087
}
1089-
#endif
10901088

1091-
return (zend_long) (rand_range32(algo, state, umax, engine_unsafe) + min);
1089+
return ((int64_t) rand_range32(algo, state, umax, engine_unsafe)) + min;
10921090
}
10931091
/* }}} */
10941092

@@ -1582,7 +1580,7 @@ PHP_METHOD(Random_Randomizer, getInt)
15821580
RETURN_THROWS();
15831581
}
15841582

1585-
result = php_random_engine_range(randomizer->algo, randomizer->state, min, max, &engine_unsafe);
1583+
result = (zend_long) php_random_engine_range(randomizer->algo, randomizer->state, min, max, &engine_unsafe);
15861584
if (engine_unsafe) {
15871585
zend_throw_exception(spl_ce_RuntimeException, "Random number generate failed", 0);
15881586
RETURN_THROWS();

ext/standard/array.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2894,7 +2894,7 @@ PHP_FUNCTION(range)
28942894

28952895
PHPAPI int php_array_data_shuffle(const php_random_engine_algo *algo, void *state, zval *array) /* {{{ */
28962896
{
2897-
zend_long idx, j, n_elems, rnd_idx, n_left;
2897+
int64_t idx, j, n_elems, rnd_idx, n_left;
28982898
zval *zv, temp;
28992899
HashTable *hash;
29002900
bool rng_unsafe = false;

ext/standard/string.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5736,7 +5736,7 @@ PHP_FUNCTION(str_rot13)
57365736

57375737
PHPAPI int php_string_shuffle(const php_random_engine_algo *algo, void *state, char *str, zend_long len) /* {{{ */
57385738
{
5739-
zend_long n_elems, rnd_idx, n_left;
5739+
int64_t n_elems, rnd_idx, n_left;
57405740
char temp;
57415741
bool rng_unsafe = false;
57425742

0 commit comments

Comments
 (0)