diff options
author | Sverker Eriksson <[email protected]> | 2012-02-20 19:52:13 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-02-21 12:10:40 +0100 |
commit | 75b831aa879234db6d8821a32f4c411ef6cfc6ff (patch) | |
tree | 96018e44b4915f152484a6f6a770f0c064c07fc4 /erts/emulator/beam/external.c | |
parent | 520ddbc83ec87bcec262680bd915184182e3998e (diff) | |
download | otp-75b831aa879234db6d8821a32f4c411ef6cfc6ff.tar.gz otp-75b831aa879234db6d8821a32f4c411ef6cfc6ff.tar.bz2 otp-75b831aa879234db6d8821a32f4c411ef6cfc6ff.zip |
erts: Fix bignum-bug in ETS with compressed option
A large 64-bit immediate number will be stored as SMALL_BIG_EXT by ETS
compressed format. When uncompressing, the SMALL_BIG_EXT was first
decoded as as bignum (by bytes_to_big) and then turned into a small
(by big_norm). This works for normal "binary_to_term" as
decoded_size() over-estimates the needed heap size. But for ETS no
over-estimation is done as the real term size is known and stored in
DbTerm.
Fixed by preventing bytes_to_big() from writing bignum digit when the
number is seen to fit in an immediate.
Diffstat (limited to 'erts/emulator/beam/external.c')
0 files changed, 0 insertions, 0 deletions