From 779e0d68a8590f8cf00dc413f715234cd5f5b7a8 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Thu, 28 Dec 2023 20:19:10 +0200 Subject: [PATCH] Switch to an API that should work with Electron's broken shared_ptr on Windows --- src/conversions.cc | 6 +++--- src/node.cc | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/conversions.cc b/src/conversions.cc index 5680b8e2..6551cd86 100644 --- a/src/conversions.cc +++ b/src/conversions.cc @@ -22,10 +22,10 @@ void InitConversions(Local exports, Local data_ext) { data->end_index_key.Reset(Nan::Persistent(Nan::New("endIndex").ToLocalChecked())); data->end_position_key.Reset(Nan::Persistent(Nan::New("endPosition").ToLocalChecked())); - auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), 2 * sizeof(uint32_t)); - data->point_transfer_buffer = (uint32_t *)(js_point_transfer_buffer->GetBackingStore()->Data()); + auto js_point_transfer_buffer = Nan::NewBuffer(2 * sizeof(uint32_t)).ToLocalChecked(); + data->point_transfer_buffer = reinterpret_cast(node::Buffer::Data(js_point_transfer_buffer)); - Nan::Set(exports, Nan::New("pointTransferArray").ToLocalChecked(), Uint32Array::New(js_point_transfer_buffer, 0, 2)); + Nan::Set(exports, Nan::New("pointTransferArray").ToLocalChecked(), Uint32Array::New(js_point_transfer_buffer.As()->Buffer(), 0, 2)); } void TransferPoint(AddonData* data, const TSPoint &point) { diff --git a/src/node.cc b/src/node.cc index 5f30939a..1f93fe7a 100644 --- a/src/node.cc +++ b/src/node.cc @@ -21,13 +21,13 @@ static inline void setup_transfer_buffer(AddonData* data, uint32_t node_count) { if (new_length > data->transfer_buffer_length) { data->transfer_buffer_length = new_length; - auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), data->transfer_buffer_length * sizeof(uint32_t)); - data->transfer_buffer = (uint32_t *)(js_transfer_buffer->GetBackingStore()->Data()); + auto js_transfer_buffer = Nan::NewBuffer(data->transfer_buffer_length * sizeof(uint32_t)).ToLocalChecked(); + data->transfer_buffer = reinterpret_cast(node::Buffer::Data(js_transfer_buffer)); Nan::Set( Nan::New(data->module_exports), Nan::New("nodeTransferArray").ToLocalChecked(), - Uint32Array::New(js_transfer_buffer, 0, data->transfer_buffer_length) + Uint32Array::New(js_transfer_buffer.As()->Buffer(), 0, data->transfer_buffer_length) ); } }