From 53ae30dc97b1a1ec285c2d226c7d4cd9c3160066 Mon Sep 17 00:00:00 2001 From: Boris Verkhovskiy Date: Sat, 24 Jun 2023 18:06:34 +0100 Subject: [PATCH] Make code compilable on Windows --- src/conversions.cc | 7 ++++++- src/node.cc | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/conversions.cc b/src/conversions.cc index a65de94c..1e013eaa 100644 --- a/src/conversions.cc +++ b/src/conversions.cc @@ -29,7 +29,12 @@ void InitConversions(Local exports) { point_transfer_buffer = static_cast(malloc(2 * sizeof(uint32_t))); - #if (V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (V8_MAJOR_VERSION == 8 && NODE_RUNTIME_ELECTRON)) + #if defined(_MSC_VER) && NODE_RUNTIME_ELECTRON && NODE_MODULE_VERSION >= 89 + auto nodeBuffer = node::Buffer::New(Isolate::GetCurrent(), (char *)point_transfer_buffer, 2 * sizeof(uint32_t), [](char *data, void *hint) {}, nullptr) + .ToLocalChecked() + .As(); + v8::Local js_point_transfer_buffer = nodeBuffer.As()->Buffer(); + #elif V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (defined(_MSC_VER) && NODE_RUNTIME_ELECTRON) auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), point_transfer_buffer, 2 * sizeof(uint32_t)); #else auto backing_store = ArrayBuffer::NewBackingStore(point_transfer_buffer, 2 * sizeof(uint32_t), BackingStore::EmptyDeleter, nullptr); diff --git a/src/node.cc b/src/node.cc index a6368ae2..c45b5cf6 100644 --- a/src/node.cc +++ b/src/node.cc @@ -30,7 +30,12 @@ static inline void setup_transfer_buffer(uint32_t node_count) { transfer_buffer_length = new_length; transfer_buffer = static_cast(malloc(transfer_buffer_length * sizeof(uint32_t))); - #if (V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (V8_MAJOR_VERSION == 8 && NODE_RUNTIME_ELECTRON)) + #if defined(_MSC_VER) && NODE_RUNTIME_ELECTRON && NODE_MODULE_VERSION >= 89 + auto nodeBuffer = node::Buffer::New(Isolate::GetCurrent(), (char *)transfer_buffer, transfer_buffer_length * sizeof(uint32_t), [](char *data, void *hint) {}, nullptr) + .ToLocalChecked() + .As(); + v8::Local js_transfer_buffer = nodeBuffer.As()->Buffer(); + #elif V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (defined(_MSC_VER) && NODE_RUNTIME_ELECTRON) auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), transfer_buffer, transfer_buffer_length * sizeof(uint32_t)); #else auto backing_store = ArrayBuffer::NewBackingStore(transfer_buffer, transfer_buffer_length * sizeof(uint32_t), BackingStore::EmptyDeleter, nullptr);