Преглед на файлове

Use ArrayBuffer.isView rather than instanceof to distinguish between views and array buffers.

Using instanceof to determine ArrayBuffers is fraught with problems in Javascript. See, for example, lodash’s implementation of isArrayBuffer, or the many isArrayBuffer libraries out there. Apparently, ArrayBuffers from a different context (like an iframe, or perhaps something in a test setup) so instanceof won’t work always. See https://github.com/feross/buffer/issues/166 for some more examples.
Jason Grout преди 4 години
родител
ревизия
901f78a4fa
променени са 1 файла, в които са добавени 1 реда и са изтрити 1 реда
  1. 1 1
      packages/services/src/kernel/serialize.ts

+ 1 - 1
packages/services/src/kernel/serialize.ts

@@ -84,7 +84,7 @@ function serializeBinary(msg: KernelMessage.IMessage): ArrayBuffer {
     // msg.buffers elements could be either views or ArrayBuffers
     // buffers elements are ArrayBuffers
     const b: any = origBuffers[i];
-    buffers.push(b instanceof ArrayBuffer ? b : b.buffer);
+    buffers.push(ArrayBuffer.isView(b) ? b.buffer : b);
   }
   const nbufs = buffers.length;
   offsets.push(4 * (nbufs + 1));