mirror of
https://github.com/php/php-src.git
synced 2025-08-20 01:14:28 +02:00
Made bcmath extension thread safe.
@Made bcmath extension thread safe. (Sander)
This commit is contained in:
parent
64a75d6d77
commit
f200f739d8
14 changed files with 186 additions and 202 deletions
|
|
@ -44,9 +44,7 @@
|
|||
only the integer part is used. */
|
||||
|
||||
void
|
||||
bc_raise (num1, num2, result, scale)
|
||||
bc_num num1, num2, *result;
|
||||
int scale;
|
||||
bc_raise (bc_num num1, bc_num num2, bc_num *result, int scale TSRMLS_DC)
|
||||
{
|
||||
bc_num temp, power;
|
||||
long exponent;
|
||||
|
|
@ -66,7 +64,7 @@ bc_raise (num1, num2, result, scale)
|
|||
if (exponent == 0)
|
||||
{
|
||||
bc_free_num (result);
|
||||
*result = bc_copy_num (_one_);
|
||||
*result = bc_copy_num (BCG(_one_));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -89,7 +87,7 @@ bc_raise (num1, num2, result, scale)
|
|||
while ((exponent & 1) == 0)
|
||||
{
|
||||
pwrscale = 2*pwrscale;
|
||||
bc_multiply (power, power, &power, pwrscale);
|
||||
bc_multiply (power, power, &power, pwrscale TSRMLS_CC);
|
||||
exponent = exponent >> 1;
|
||||
}
|
||||
temp = bc_copy_num (power);
|
||||
|
|
@ -100,10 +98,10 @@ bc_raise (num1, num2, result, scale)
|
|||
while (exponent > 0)
|
||||
{
|
||||
pwrscale = 2*pwrscale;
|
||||
bc_multiply (power, power, &power, pwrscale);
|
||||
bc_multiply (power, power, &power, pwrscale TSRMLS_CC);
|
||||
if ((exponent & 1) == 1) {
|
||||
calcscale = pwrscale + calcscale;
|
||||
bc_multiply (temp, power, &temp, calcscale);
|
||||
bc_multiply (temp, power, &temp, calcscale TSRMLS_CC);
|
||||
}
|
||||
exponent = exponent >> 1;
|
||||
}
|
||||
|
|
@ -111,7 +109,7 @@ bc_raise (num1, num2, result, scale)
|
|||
/* Assign the value. */
|
||||
if (neg)
|
||||
{
|
||||
bc_divide (_one_, temp, result, rscale);
|
||||
bc_divide (BCG(_one_), temp, result, rscale TSRMLS_CC);
|
||||
bc_free_num (&temp);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue