diff options
author | Fredrik Gustafsson <[email protected]> | 2013-10-11 09:41:29 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-10-11 09:41:29 +0200 |
commit | 8a5f2c73d9664c5a170827cea10214019490e923 (patch) | |
tree | acf6aba4445bdde0246d42a98254919d8a8e8640 | |
parent | 5b7844edf78d8225ba73aaa0551b94b8b91e58f7 (diff) | |
parent | 54aecc2a73a1398d141c7f8e9a96c24a5a5731cf (diff) | |
download | otp-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.c | 8 | ||||
-rw-r--r-- | erts/emulator/test/big_SUITE_data/eq_big.dat | 1 |
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. |