mirror of
https://github.com/php/php-src.git
synced 2024-09-28 21:36:12 +00:00
Implement feature request #50283 (allow base in gmp_strval to use full range: 2 to 62, and -2 to -36)
This commit is contained in:
parent
c78ca26d9e
commit
f6d07bdbb2
@ -804,14 +804,14 @@ ZEND_FUNCTION(gmp_strval)
|
||||
return;
|
||||
}
|
||||
|
||||
if (base < 2 || base > 36) {
|
||||
if ((base < 2 && base > -2) || base > 36 || base < -36) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad base for conversion: %ld", base);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
FETCH_GMP_ZVAL(gmpnum, gmpnumber_arg, temp_a);
|
||||
|
||||
num_len = mpz_sizeinbase(*gmpnum, base);
|
||||
num_len = mpz_sizeinbase(*gmpnum, abs(base));
|
||||
out_string = emalloc(num_len+2);
|
||||
if (mpz_sgn(*gmpnum) < 0) {
|
||||
num_len++;
|
||||
|
29
ext/gmp/tests/bug50283.phpt
Normal file
29
ext/gmp/tests/bug50283.phpt
Normal file
@ -0,0 +1,29 @@
|
||||
--TEST--
|
||||
Feature Request #50283 (allow base in gmp_strval to use full range: 2 to 62, and -2 to -36)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("gmp")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$a = gmp_init("0x41682179fbf5");
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,-36));
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,36));
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,-1));
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,1));
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,-37));
|
||||
printf("Decimal: %s, 36-based: %s\n", gmp_strval($a), gmp_strval($a,37));
|
||||
?>
|
||||
--EXPECTF--
|
||||
Decimal: 71915494046709, 36-based: PHPISCOOL
|
||||
Decimal: 71915494046709, 36-based: phpiscool
|
||||
|
||||
Warning: gmp_strval(): Bad base for conversion: -1 in %s on line 5
|
||||
Decimal: 71915494046709, 36-based:
|
||||
|
||||
Warning: gmp_strval(): Bad base for conversion: 1 in %s on line 6
|
||||
Decimal: 71915494046709, 36-based:
|
||||
|
||||
Warning: gmp_strval(): Bad base for conversion: -37 in %s on line 7
|
||||
Decimal: 71915494046709, 36-based:
|
||||
|
||||
Warning: gmp_strval(): Bad base for conversion: 37 in %s on line 8
|
||||
Decimal: 71915494046709, 36-based:
|
Loading…
Reference in New Issue
Block a user