Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ext/bcmath/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PHP_ARG_ENABLE(bcmath, whether to enable bc style precision math functions,

if test "$PHP_BCMATH" != "no"; then
PHP_NEW_EXTENSION(bcmath, bcmath.c \
libbcmath/src/add.c libbcmath/src/div.c libbcmath/src/init.c libbcmath/src/neg.c libbcmath/src/outofmem.c libbcmath/src/raisemod.c libbcmath/src/rt.c libbcmath/src/sub.c \
libbcmath/src/add.c libbcmath/src/div.c libbcmath/src/init.c libbcmath/src/neg.c libbcmath/src/outofmem.c libbcmath/src/raisemod.c libbcmath/src/sub.c \
libbcmath/src/compare.c libbcmath/src/divmod.c libbcmath/src/int2num.c libbcmath/src/num2long.c libbcmath/src/output.c libbcmath/src/recmul.c \
libbcmath/src/sqrt.c libbcmath/src/zero.c libbcmath/src/debug.c libbcmath/src/doaddsub.c libbcmath/src/nearzero.c libbcmath/src/num2str.c libbcmath/src/raise.c \
libbcmath/src/rmzero.c libbcmath/src/str2num.c,
Expand Down
2 changes: 1 addition & 1 deletion ext/bcmath/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ARG_ENABLE("bcmath", "bc style precision math functions", "yes");
if (PHP_BCMATH == "yes") {
EXTENSION("bcmath", "bcmath.c", null, "-Iext/bcmath/libbcmath/src /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
ADD_SOURCES("ext/bcmath/libbcmath/src", "add.c div.c init.c neg.c \
outofmem.c raisemod.c rt.c sub.c compare.c divmod.c int2num.c \
outofmem.c raisemod.c sub.c compare.c divmod.c int2num.c \
num2long.c output.c recmul.c sqrt.c zero.c debug.c doaddsub.c \
nearzero.c num2str.c raise.c rmzero.c str2num.c", "bcmath");

Expand Down
2 changes: 0 additions & 2 deletions ext/bcmath/libbcmath/src/bcmath.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,6 @@ _PROTOTYPE(void bc_out_num, (bc_num num, int o_base, void (* out_char)(int),

/* Prototypes needed for external utility routines. */

_PROTOTYPE(void bc_rt_warn, (char *mesg ,...));
_PROTOTYPE(void bc_rt_error, (char *mesg ,...));
_PROTOTYPE(void bc_out_of_memory, (void));

#define bc_new_num(length, scale) _bc_new_num_ex((length), (scale), 0)
Expand Down
4 changes: 2 additions & 2 deletions ext/bcmath/libbcmath/src/raise.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ bc_raise (bc_num num1, bc_num num2, bc_num *result, int scale)

/* Check the exponent for scale digits and convert to a long. */
if (num2->n_scale != 0)
bc_rt_warn ("non-zero scale in exponent");
php_error_docref (NULL, E_WARNING, "non-zero scale in exponent");
exponent = bc_num2long (num2);
if (exponent == 0 && (num2->n_len > 1 || num2->n_value[0] != 0))
bc_rt_error ("exponent too large in raise");
php_error_docref (NULL, E_WARNING, "exponent too large");

/* Special case if exponent is a zero. */
if (exponent == 0)
Expand Down
6 changes: 3 additions & 3 deletions ext/bcmath/libbcmath/src/raisemod.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,21 +80,21 @@ bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale)
/* Check the base for scale digits. */
if (power->n_scale != 0)
{
bc_rt_warn ("non-zero scale in base");
php_error_docref (NULL, E_WARNING, "non-zero scale in base");
_bc_truncate (&power);
}

/* Check the exponent for scale digits. */
if (exponent->n_scale != 0)
{
bc_rt_warn ("non-zero scale in exponent");
php_error_docref (NULL, E_WARNING, "non-zero scale in exponent");
_bc_truncate (&exponent);
}

/* Check the modulus for scale digits. */
if (modulus->n_scale != 0)
{
bc_rt_warn ("non-zero scale in modulus");
php_error_docref (NULL, E_WARNING, "non-zero scale in modulus");
_bc_truncate (&modulus);
}

Expand Down
65 changes: 0 additions & 65 deletions ext/bcmath/libbcmath/src/rt.c

This file was deleted.

15 changes: 15 additions & 0 deletions ext/bcmath/tests/bcpow_error1.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
bcpow() does not support non-integral exponents
--SKIPIF--
<?php
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
?>
--FILE--
<?php
var_dump(bcpow('1', '1.1', 2));
?>
===DONE===
--EXPECTF--
Warning: bcpow(): non-zero scale in exponent in %s on line %d
string(1) "1"
===DONE===
15 changes: 15 additions & 0 deletions ext/bcmath/tests/bcpow_error2.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
bcpow() does not support exponents >= 2**63
--SKIPIF--
<?php
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
?>
--FILE--
<?php
var_dump(bcpow('0', '9223372036854775808', 2));
?>
===DONE===
--EXPECTF--
Warning: bcpow(): exponent too large in %s on line %d
string(1) "1"
===DONE===
18 changes: 0 additions & 18 deletions ext/bcmath/tests/bug72093-win32.phpt

This file was deleted.

6 changes: 2 additions & 4 deletions ext/bcmath/tests/bug72093.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ Bug 72093: bcpowmod accepts negative scale and corrupts _one_ definition
--SKIPIF--
<?php
if(!extension_loaded("bcmath")) print "skip";
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip Not valid for windows');
}
?>
--FILE--
<?php
Expand All @@ -14,5 +11,6 @@ var_dump(bcpowmod(1, 1.2, 1, 1));
?>
--EXPECTF--
string(1) "1"
bc math warning: non-zero scale in exponent

Warning: bcpowmod(): non-zero scale in exponent in %s on line %d
string(3) "0.0"
21 changes: 0 additions & 21 deletions ext/bcmath/tests/bug75178-win32.phpt

This file was deleted.

10 changes: 4 additions & 6 deletions ext/bcmath/tests/bug75178.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,17 @@ Bug #75178 (bcpowmod() misbehaves for non-integer base or modulus)
--SKIPIF--
<?php
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip Not valid for windows');
}
?>
--FILE--
<?php
var_dump(bcpowmod('4.1', '4', '3', 3));
var_dump(bcpowmod('4', '4', '3.1', 3));
?>
===DONE===
--EXPECT--
bc math warning: non-zero scale in base
--EXPECTF--
Warning: bcpowmod(): non-zero scale in base in %s on line %d
string(5) "1.000"
bc math warning: non-zero scale in modulus

Warning: bcpowmod(): non-zero scale in modulus in %s on line %d
string(5) "1.000"
===DONE===