Prevent error due to LIST chunks

This commit is contained in:
Eric Rosenbaum 2019-01-08 12:11:53 -05:00
parent 6f32a0bec7
commit db1c89fa34

View file

@ -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;
}