diff --git a/dist/bert.js b/dist/bert.js index a9a08b6..57c802a 100644 --- a/dist/bert.js +++ b/dist/bert.js @@ -335,8 +335,9 @@ export class Bert { }; }; decode_string = (buffer) => { - const size = this.bytesToInt(buffer, 2, true); - buffer = buffer.subarray(2); + const sizeLen = this.convention == Lang.ELIXIR ? 4 : 2; + const size = this.bytesToInt(buffer, sizeLen, true); + buffer = buffer.subarray(sizeLen); return { value: buffer.toString("utf8", 0, size), rest: buffer.subarray(size), @@ -345,7 +346,7 @@ export class Bert { decode_list = (buffer) => { const arr = []; const size = this.bytesToInt(buffer, 4, true); - buffer = Buffer.from(buffer, 4); + buffer = buffer.subarray(4); for (let i = 0; i < size; ++i) { const el = this.#decode(buffer); arr.push(el.value); diff --git a/src/bert.ts b/src/bert.ts index fbfd387..dfcb284 100644 --- a/src/bert.ts +++ b/src/bert.ts @@ -391,9 +391,9 @@ export class Bert { }; decode_string = (buffer: Buffer) => { - const size = this.bytesToInt(buffer, 2, true); - - buffer = buffer.subarray(2); + const sizeLen = this.convention == Lang.ELIXIR ? 4 : 2; + const size = this.bytesToInt(buffer, sizeLen, true); + buffer = buffer.subarray(sizeLen); return { value: buffer.toString("utf8", 0, size), @@ -404,7 +404,7 @@ export class Bert { decode_list = (buffer: Buffer) => { const arr = []; const size = this.bytesToInt(buffer, 4, true); - buffer = Buffer.from(buffer, 4); + buffer = buffer.subarray(4); for (let i = 0; i < size; ++i) { const el = this.#decode(buffer);