summaryrefslogtreecommitdiff
path: root/ext/standard/rand.c
diff options
context:
space:
mode:
authorLeigh <leigh@php.net>2016-08-10 23:32:32 +0100
committerLeigh <leigh@php.net>2016-08-10 23:32:32 +0100
commit9a9004318fa3a5b2c2c3c4a4fafed9ad4767df4a (patch)
tree23a54936a7006cf9c96970d168f1597923621890 /ext/standard/rand.c
parent24fdffdacbfeaa20e8f08d44c7c61e3fb7ba9ac5 (diff)
downloadphp-git-9a9004318fa3a5b2c2c3c4a4fafed9ad4767df4a.tar.gz
Preserve BC for rand() AND mt_rand() where min > max
Diffstat (limited to 'ext/standard/rand.c')
-rw-r--r--ext/standard/rand.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/ext/standard/rand.c b/ext/standard/rand.c
index 2720f55661..e97e0b46f0 100644
--- a/ext/standard/rand.c
+++ b/ext/standard/rand.c
@@ -45,6 +45,30 @@ PHPAPI zend_long php_rand(void)
}
/* }}} */
+/* {{{ proto int mt_rand([int min, int max])
+ Returns a random number from Mersenne Twister */
+PHP_FUNCTION(rand)
+{
+ zend_long min;
+ zend_long max;
+ int argc = ZEND_NUM_ARGS();
+
+ if (argc == 0) {
+ RETURN_LONG(php_mt_rand() >> 1);
+ }
+
+ if (zend_parse_parameters(argc, "ll", &min, &max) == FAILURE) {
+ return;
+ }
+
+ if (max < min) {
+ RETURN_LONG(php_mt_rand_common(max, min));
+ }
+
+ RETURN_LONG(php_mt_rand_common(min, max));
+}
+/* }}} */
+
/*
* Local variables:
* tab-width: 4