summaryrefslogtreecommitdiff
path: root/ext/ffi/00_ffi.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ffi/00_ffi.js')
-rw-r--r--ext/ffi/00_ffi.js8
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/ffi/00_ffi.js b/ext/ffi/00_ffi.js
index abe806cc0..b979c73d4 100644
--- a/ext/ffi/00_ffi.js
+++ b/ext/ffi/00_ffi.js
@@ -5,10 +5,11 @@
const core = window.Deno.core;
const __bootstrap = window.__bootstrap;
const {
- ArrayBuffer,
+ ArrayBufferPrototype,
Uint8Array,
BigInt,
Number,
+ ObjectPrototypeIsPrototypeOf,
TypeError,
} = window.__bootstrap.primordials;
@@ -141,6 +142,7 @@
return this.value;
}
}
+ const UnsafePointerPrototype = UnsafePointer.prototype;
function prepareArgs(types, args) {
const parameters = [];
@@ -152,12 +154,12 @@
if (type === "pointer") {
if (
- arg?.buffer instanceof ArrayBuffer &&
+ ObjectPrototypeIsPrototypeOf(ArrayBufferPrototype, arg?.buffer) &&
arg.byteLength !== undefined
) {
parameters.push(buffers.length);
buffers.push(arg);
- } else if (arg instanceof UnsafePointer) {
+ } else if (ObjectPrototypeIsPrototypeOf(UnsafePointerPrototype, arg)) {
parameters.push(packU64(arg.value));
buffers.push(undefined);
} else if (arg === null) {