BigInteger: fix behavior on 32-bit PHP installs

This commit is contained in:
terrafrost 2022-06-26 17:07:45 -05:00
parent 22ee5597d3
commit 0b3cc98084

View File

@ -75,9 +75,12 @@ class PHP32 extends PHP
$i = 0; $i = 0;
} }
list(, $digit) = unpack('N', substr($val, $i, 4)); list(, $digit) = unpack('N', substr($val, $i, 4));
if ($digit < 0) {
$digit += 0xFFFFFFFF + 1;
}
$step = count($vals) & 3; $step = count($vals) & 3;
if ($step) { if ($step) {
$digit >>= 2 * $step; $digit = floor($digit / pow(2, 2 * $step));
} }
if ($step != 3) { if ($step != 3) {
$digit &= static::MAX_DIGIT; $digit &= static::MAX_DIGIT;