encoding: fix varint bns.

This commit is contained in:
Christopher Jeffrey 2016-12-08 01:17:53 -08:00
parent dd0ebe5320
commit 1e18ca772a
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -574,7 +574,7 @@ encoding.sizeVarint = function sizeVarint(num) {
*/
encoding.readVarintBN = function readVarintBN(data, off) {
var value, size;
var result, value, size;
assert(off < data.length);
@ -586,7 +586,9 @@ encoding.readVarintBN = function readVarintBN(data, off) {
assert(value.bitLength() > 32);
return new Varint(size, value);
default:
return encoding.readVarint(data, off);
result = encoding.readVarint(data, off);
result.value = new BN(result.value);
return result;
}
};
@ -600,9 +602,9 @@ encoding.readVarintBN = function readVarintBN(data, off) {
encoding.writeVarintBN = function writeVarintBN(dst, num, off) {
if (num.bitLength() > 32) {
dst[off] = 0xff;
encoding.writeU64BN(dst, num, off + 1);
return off + 9;
dst[off++] = 0xff;
off = encoding.writeU64BN(dst, num, off);
return off;
}
return encoding.writeVarint(dst, num.toNumber(), off);