From db1c89fa34d63cbc30b99bb7f9f969969667f074 Mon Sep 17 00:00:00 2001 From: Eric Rosenbaum Date: Tue, 8 Jan 2019 12:11:53 -0500 Subject: [PATCH] Prevent error due to LIST chunks --- src/ArrayBufferStream.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ArrayBufferStream.js b/src/ArrayBufferStream.js index 86d62f2..e5b8a84 100644 --- a/src/ArrayBufferStream.js +++ b/src/ArrayBufferStream.js @@ -150,7 +150,17 @@ class ArrayBufferStream { * @return {number} the next 32 bit integer in the stream */ readInt32 () { - const val = new Int32Array(this.arrayBuffer, this._position, 1)[0]; + // const sliced = this.arrayBuffer.slice + let val; + if (this._position % 4 === 0) { + val = new Int32Array(this.arrayBuffer, this._position, 1)[0]; + } else { + // Cannot read Int32 directly out because offset is not multiple of 4 + // Need to slice out the values first + val = new Int32Array( + this.arrayBuffer.slice(this._position, this._position + 4) + )[0]; + } this._position += 4; // one 32 bit int is 4 bytes return val; }