diff options
author | Sverker Eriksson <[email protected]> | 2010-06-21 11:38:25 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2010-06-30 19:42:57 +0200 |
commit | 32494dbba73ef1668555b793ead34f94e8bb792b (patch) | |
tree | be507bb0cee9ed4955f1a3c003cb5731a533e4de /erts/emulator/beam/big.c | |
parent | 5ef0b06ddbaa48499394c30d56fc81e7162abf50 (diff) | |
download | otp-32494dbba73ef1668555b793ead34f94e8bb792b.tar.gz otp-32494dbba73ef1668555b793ead34f94e8bb792b.tar.bz2 otp-32494dbba73ef1668555b793ead34f94e8bb792b.zip |
Fix bug that caused faulty 64-bit integers from drivers.
Diffstat (limited to 'erts/emulator/beam/big.c')
-rw-r--r-- | erts/emulator/beam/big.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/erts/emulator/beam/big.c b/erts/emulator/beam/big.c index 90d3a0304a..2d250f32cf 100644 --- a/erts/emulator/beam/big.c +++ b/erts/emulator/beam/big.c @@ -1509,14 +1509,14 @@ Eterm erts_uint64_to_big(Uint64 x, Eterm **hpp) *hp = make_pos_bignum_header(2); BIG_DIGIT(hp, 0) = (Uint) (x & ((Uint) 0xffffffff)); BIG_DIGIT(hp, 1) = (Uint) ((x >> 32) & ((Uint) 0xffffffff)); - *hpp += 2; + *hpp += 3; } else #endif { *hp = make_pos_bignum_header(1); BIG_DIGIT(hp, 0) = (Uint) x; - *hpp += 1; + *hpp += 2; } return make_big(hp); } @@ -1539,7 +1539,7 @@ Eterm erts_sint64_to_big(Sint64 x, Eterm **hpp) *hp = make_pos_bignum_header(2); BIG_DIGIT(hp, 0) = (Uint) (x & ((Uint) 0xffffffff)); BIG_DIGIT(hp, 1) = (Uint) ((x >> 32) & ((Uint) 0xffffffff)); - *hpp += 2; + *hpp += 3; } else #endif @@ -1549,7 +1549,7 @@ Eterm erts_sint64_to_big(Sint64 x, Eterm **hpp) else *hp = make_pos_bignum_header(1); BIG_DIGIT(hp, 0) = (Uint) x; - *hpp += 1; + *hpp += 2; } return make_big(hp); } |