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) { encoding.readVarintBN = function readVarintBN(data, off) {
var value, size; var result, value, size;
assert(off < data.length); assert(off < data.length);
@ -586,7 +586,9 @@ encoding.readVarintBN = function readVarintBN(data, off) {
assert(value.bitLength() > 32); assert(value.bitLength() > 32);
return new Varint(size, value); return new Varint(size, value);
default: 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) { encoding.writeVarintBN = function writeVarintBN(dst, num, off) {
if (num.bitLength() > 32) { if (num.bitLength() > 32) {
dst[off] = 0xff; dst[off++] = 0xff;
encoding.writeU64BN(dst, num, off + 1); off = encoding.writeU64BN(dst, num, off);
return off + 9; return off;
} }
return encoding.writeVarint(dst, num.toNumber(), off); return encoding.writeVarint(dst, num.toNumber(), off);