diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2017-09-06 23:30:53 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2017-09-06 23:30:53 +0200 |
commit | dea41f3c3a003a22893b27eead429f963d3230c3 (patch) | |
tree | ab38286a052c0620eafc1f9f858ec103bace515e | |
parent | 42549b7844472a896dbd51b8305a835e731ecb25 (diff) | |
download | php-git-dea41f3c3a003a22893b27eead429f963d3230c3.tar.gz |
Fixed bug #44995 (bcpowmod() fails if scale != 0)
`bc_divmod()` is supposed to do integer division, so we must not apply
a scale factor here.
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | ext/bcmath/libbcmath/src/divmod.c | 2 | ||||
-rw-r--r-- | ext/bcmath/tests/bug44995.phpt | 16 |
3 files changed, 20 insertions, 1 deletions
@@ -5,6 +5,9 @@ PHP NEWS - Core: . Fixed #75042 run-tests.php issues with EXTENSION block). (John Boehr) +- BCMath: + . Fixed bug #44995 (bcpowmod() fails if scale != 0). (cmb) + - CLI server: . Fixed bug #70470 (Built-in server truncates headers spanning over TCP packets). (bouk) diff --git a/ext/bcmath/libbcmath/src/divmod.c b/ext/bcmath/libbcmath/src/divmod.c index d7aaa3509d..08c2f8a2a2 100644 --- a/ext/bcmath/libbcmath/src/divmod.c +++ b/ext/bcmath/libbcmath/src/divmod.c @@ -59,7 +59,7 @@ bc_divmod (bc_num num1, bc_num num2, bc_num *quot, bc_num *rem, int scale) bc_init_num(&temp); /* Calculate it. */ - bc_divide (num1, num2, &temp, scale); + bc_divide (num1, num2, &temp, 0); if (quot) quotient = bc_copy_num (temp); bc_multiply (temp, num2, &temp, rscale); diff --git a/ext/bcmath/tests/bug44995.phpt b/ext/bcmath/tests/bug44995.phpt new file mode 100644 index 0000000000..6eb591f92b --- /dev/null +++ b/ext/bcmath/tests/bug44995.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #44995 (bcpowmod() fails if scale != 0) +--SKIPIF-- +<?php +if (!extension_loaded('bcmath')) die('skip bcmath extension not available'); +?> +--FILE-- +<?php +var_dump(bcpowmod('4', '4', '3', 1)); +var_dump(bcpowmod('3234', '32345', '22345', 1)); +?> +===DONE=== +--EXPECT-- +string(3) "1.0" +string(7) "17334.0" +===DONE=== |