script and reader.
This commit is contained in:
parent
381e2c52b9
commit
6e2b58c16d
@ -447,12 +447,13 @@ BufferReader.prototype.readNullString = function readNullString(enc) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a varint.
|
* Read a varint.
|
||||||
|
* @param {Boolean?} big - Whether to read as a big number.
|
||||||
* @returns {Number}
|
* @returns {Number}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BufferReader.prototype.readVarint = function readVarint() {
|
BufferReader.prototype.readVarint = function readVarint(big) {
|
||||||
assert(this.offset + 1 <= this.data.length);
|
assert(this.offset + 1 <= this.data.length);
|
||||||
var result = utils.readVarint(this.data, this.offset);
|
var result = utils.readVarint(this.data, this.offset, big);
|
||||||
assert(result.off <= this.data.length);
|
assert(result.off <= this.data.length);
|
||||||
assert(result.r >= 0);
|
assert(result.r >= 0);
|
||||||
this.offset = result.off;
|
this.offset = result.off;
|
||||||
|
|||||||
@ -3366,7 +3366,7 @@ Script.format = function format(code) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
size = chunk.length.toString(16);
|
size = chunk.length.toString(16);
|
||||||
if (size.length < 2)
|
while (size.length % 2 !== 0)
|
||||||
size = '0' + size;
|
size = '0' + size;
|
||||||
if (!constants.opcodesByVal[op]) {
|
if (!constants.opcodesByVal[op]) {
|
||||||
op = op.toString(16);
|
op = op.toString(16);
|
||||||
|
|||||||
@ -2003,25 +2003,40 @@ utils.write64BE = function write64BE(dst, num, off) {
|
|||||||
* Read a varint.
|
* Read a varint.
|
||||||
* @param {Buffer} arr
|
* @param {Buffer} arr
|
||||||
* @param {Number} off
|
* @param {Number} off
|
||||||
|
* @param {Boolean?} big - Whether to read as a big number.
|
||||||
* @returns {Number}
|
* @returns {Number}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
utils.readVarint = function readVarint(arr, off) {
|
utils.readVarint = function readVarint(arr, off, big) {
|
||||||
var r, bytes;
|
var r, bytes;
|
||||||
|
|
||||||
off = off >>> 0;
|
off = off >>> 0;
|
||||||
|
|
||||||
|
assert(off < arr.length);
|
||||||
|
|
||||||
if (arr[off] < 0xfd) {
|
if (arr[off] < 0xfd) {
|
||||||
r = arr[off];
|
r = arr[off];
|
||||||
|
if (big)
|
||||||
|
r = new bn(r);
|
||||||
bytes = 1;
|
bytes = 1;
|
||||||
} else if (arr[off] === 0xfd) {
|
} else if (arr[off] === 0xfd) {
|
||||||
|
assert(off + 2 < arr.length);
|
||||||
r = arr[off + 1] | (arr[off + 2] << 8);
|
r = arr[off + 1] | (arr[off + 2] << 8);
|
||||||
|
if (big)
|
||||||
|
r = new bn(r);
|
||||||
bytes = 3;
|
bytes = 3;
|
||||||
} else if (arr[off] === 0xfe) {
|
} else if (arr[off] === 0xfe) {
|
||||||
|
assert(off + 4 < arr.length);
|
||||||
r = utils.readU32(arr, off + 1);
|
r = utils.readU32(arr, off + 1);
|
||||||
|
if (big)
|
||||||
|
r = new bn(r);
|
||||||
bytes = 5;
|
bytes = 5;
|
||||||
} else if (arr[off] === 0xff) {
|
} else if (arr[off] === 0xff) {
|
||||||
r = utils.readU64N(arr, off + 1);
|
assert(off + 8 < arr.length);
|
||||||
|
if (big)
|
||||||
|
r = utils.readU64(arr, off + 1);
|
||||||
|
else
|
||||||
|
r = utils.readU64N(arr, off + 1);
|
||||||
bytes = 9;
|
bytes = 9;
|
||||||
} else {
|
} else {
|
||||||
assert(false, 'Malformed varint.');
|
assert(false, 'Malformed varint.');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user