From 6f006598656ee30f22ca25c208a553d40f58beb9 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 1 Nov 2022 15:22:40 +0000 Subject: [PATCH] Merge pull request #10246 from overleaf/jpa-pdf-caching-object-id-back-fill [web] pdf-caching: double down on back-filling of object-id GitOrigin-RevId: 751392dc5ed59eb621eca3813040c7b92ef1369e --- .../js/features/pdf-preview/util/pdf-caching.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/services/web/frontend/js/features/pdf-preview/util/pdf-caching.js b/services/web/frontend/js/features/pdf-preview/util/pdf-caching.js index b752b6c794..d9e67cfbbf 100644 --- a/services/web/frontend/js/features/pdf-preview/util/pdf-caching.js +++ b/services/web/frontend/js/features/pdf-preview/util/pdf-caching.js @@ -125,10 +125,19 @@ function backFillObjectContext(chunk, arrayBuffer) { return new Uint8Array(arrayBuffer) } const { size, objectId } = chunk - const header = Uint8Array.from(objectId) const fullBuffer = new Uint8Array(size) - fullBuffer.set(header, 0) - fullBuffer.set(new Uint8Array(arrayBuffer), objectId.length) + const sourceBuffer = new Uint8Array(arrayBuffer) + try { + fullBuffer.set(objectId, 0) + fullBuffer.set(sourceBuffer, objectId.byteLength) + } catch (err) { + throw OError.tag(err, 'broken back-filling of object-id', { + objectIdByteLength: objectId.byteLength, + fullBufferByteLength: fullBuffer.byteLength, + arrayBufferByteLength: arrayBuffer.byteLength, + sourceBufferByteLength: sourceBuffer.byteLength, + }) + } return fullBuffer }