diff --git a/lib/utils/encoding.js b/lib/utils/encoding.js index 7b6d70ad..120464cf 100644 --- a/lib/utils/encoding.js +++ b/lib/utils/encoding.js @@ -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);