aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFredrik Gustafsson <[email protected]>2013-10-11 09:41:29 +0200
committerFredrik Gustafsson <[email protected]>2013-10-11 09:41:29 +0200
commit8a5f2c73d9664c5a170827cea10214019490e923 (patch)
treeacf6aba4445bdde0246d42a98254919d8a8e8640
parent5b7844edf78d8225ba73aaa0551b94b8b91e58f7 (diff)
parent54aecc2a73a1398d141c7f8e9a96c24a5a5731cf (diff)
downloadotp-8a5f2c73d9664c5a170827cea10214019490e923.tar.gz
otp-8a5f2c73d9664c5a170827cea10214019490e923.tar.bz2
otp-8a5f2c73d9664c5a170827cea10214019490e923.zip
Merge branch 'larshesel/fix-bsr-bug/OTP-11381' into maint
* larshesel/fix-bsr-bug/OTP-11381: Fix bsr bug Add bsr test data showing bug when shifting large numbers
-rw-r--r--erts/emulator/beam/big.c8
-rw-r--r--erts/emulator/test/big_SUITE_data/eq_big.dat1
2 files changed, 5 insertions, 4 deletions
diff --git a/erts/emulator/beam/big.c b/erts/emulator/beam/big.c
index 6b43c53985..2b27b111d8 100644
--- a/erts/emulator/beam/big.c
+++ b/erts/emulator/beam/big.c
@@ -1325,9 +1325,9 @@ static dsize_t I_lshift(ErtsDigit* x, dsize_t xl, Sint y,
return 1;
}
else {
- SWord ay = (y < 0) ? -y : y;
- int bw = ay / D_EXP;
- int sw = ay % D_EXP;
+ Uint ay = (y < 0) ? -y : y;
+ Uint bw = ay / D_EXP;
+ Uint sw = ay % D_EXP;
dsize_t rl;
ErtsDigit a1=0;
ErtsDigit a0=0;
@@ -1368,7 +1368,7 @@ static dsize_t I_lshift(ErtsDigit* x, dsize_t xl, Sint y,
}
if (sign) {
- int zl = bw;
+ Uint zl = bw;
ErtsDigit* z = x;
while(zl--) {
diff --git a/erts/emulator/test/big_SUITE_data/eq_big.dat b/erts/emulator/test/big_SUITE_data/eq_big.dat
index 5511d1bf10..4ccb33d182 100644
--- a/erts/emulator/test/big_SUITE_data/eq_big.dat
+++ b/erts/emulator/test/big_SUITE_data/eq_big.dat
@@ -13001,4 +13001,5 @@
0 = 7153697524993 bsr 475833444444444444444444444444444444444444444444.
-1 = -83987348 bsr 475833444444444444444444444444444444444444444444.
+0 = 1183140560213014108063589658350 bsr 146783911423364576743092537299333564210980159306769991919205685720763064069663027716481187399048043939495935.