diff --git a/src/array/ShareableArray.ts b/src/array/ShareableArray.ts index dcea152..af4a4e6 100644 --- a/src/array/ShareableArray.ts +++ b/src/array/ShareableArray.ts @@ -887,11 +887,7 @@ export class ShareableArray extends TransferableDataStructure { // Copy from shared memory to a temporary private buffer (since we cannot directly decode from shared memory) const sourceView = new Uint8Array(this.dataView.buffer, dataPos + ShareableArray.DATA_OBJECT_OFFSET, valueLength); - const targetView = new Uint8Array(this.getFittingDecoderBuffer(valueLength), 0, valueLength); - targetView.set(sourceView); - - - return encoder.decode(targetView); + return encoder.decode(sourceView); } private deleteItem(index: number): void { diff --git a/src/encoding/NumberEncoder.ts b/src/encoding/NumberEncoder.ts index 51e2228..0404d18 100644 --- a/src/encoding/NumberEncoder.ts +++ b/src/encoding/NumberEncoder.ts @@ -2,7 +2,7 @@ import Serializable from "./Serializable"; export default class NumberEncoder implements Serializable { decode(buffer: Uint8Array): number { - const bufferView = new DataView(buffer.buffer); + const bufferView = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength); // First byte indicates if we did store a float or an int const numberType = bufferView.getUint8(0);