From 26625e8fb3d931e6e5c7daf40a4e28e664e19ac3 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Mon, 26 Jul 2021 11:39:35 -0700 Subject: [PATCH] Fix incorrect buffer slices --- extensions/ipynb/src/helpers.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ipynb/src/helpers.ts b/extensions/ipynb/src/helpers.ts index 048bc380fc7..31fa9193355 100644 --- a/extensions/ipynb/src/helpers.ts +++ b/extensions/ipynb/src/helpers.ts @@ -337,7 +337,7 @@ function translateCellErrorOutput(output: NotebookCellOutput): nbformat.IError { }; } const originalError: undefined | nbformat.IError = output.metadata?.originalError; - const value: Error = JSON.parse(textDecoder.decode(firstItem.data.buffer.slice(firstItem.data.byteOffset))); + const value: Error = JSON.parse(textDecoder.decode(firstItem.data)); return { output_type: 'error', ename: value.name, @@ -387,10 +387,10 @@ function convertOutputMimeToJupyterOutput(mime: string, value: Uint8Array) { } try { if (mime === CellOutputMimeTypes.error) { - const stringValue = textDecoder.decode(value.buffer.slice(value.byteOffset)); + const stringValue = textDecoder.decode(value); return JSON.parse(stringValue); } else if (mime.startsWith('text/') || textMimeTypes.includes(mime)) { - const stringValue = textDecoder.decode(value.buffer.slice(value.byteOffset)); + const stringValue = textDecoder.decode(value); return splitMultilineString(stringValue); } else if (mime.startsWith('image/') && mime !== 'image/svg+xml') { // Images in Jupyter are stored in base64 encoded format. @@ -399,16 +399,16 @@ function convertOutputMimeToJupyterOutput(mime: string, value: Uint8Array) { return Buffer.from(value).toString('base64'); } else { // https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it - const stringValue = textDecoder.decode(value.buffer.slice(value.byteOffset)); + const stringValue = textDecoder.decode(value); return btoa(encodeURIComponent(stringValue).replace(/%([0-9A-F]{2})/g, function (_match, p1) { return String.fromCharCode(Number.parseInt('0x' + p1)); })); } } else if (mime.toLowerCase().includes('json')) { - const stringValue = textDecoder.decode(value.buffer.slice(value.byteOffset)); + const stringValue = textDecoder.decode(value); return stringValue.length > 0 ? JSON.parse(stringValue) : stringValue; } else { - const stringValue = textDecoder.decode(value.buffer.slice(value.byteOffset)); + const stringValue = textDecoder.decode(value); return stringValue; } } catch (ex) {