diff --git a/package.json b/package.json index b27efdee..0d7c1369 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.1", - "node-addon-api": "^6.0.0", + "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", "semver": "^7.5.0", "simple-get": "^4.0.1", diff --git a/src/common.cc b/src/common.cc index 4e04f786..dec73e88 100644 --- a/src/common.cc +++ b/src/common.cc @@ -65,16 +65,6 @@ namespace sharp { } return vector; } - Napi::Buffer NewOrCopyBuffer(Napi::Env env, char* data, size_t len) { - try { - return Napi::Buffer::New(env, data, len, FreeCallback); - } catch (Napi::Error const &err) { - static_cast(err); - } - Napi::Buffer buf = Napi::Buffer::Copy(env, data, len); - FreeCallback(nullptr, data); - return buf; - } // Create an InputDescriptor instance from a Napi::Object describing an input image InputDescriptor* CreateInputDescriptor(Napi::Object input) { diff --git a/src/common.h b/src/common.h index 3888f3f2..35e7ac1a 100644 --- a/src/common.h +++ b/src/common.h @@ -126,7 +126,6 @@ namespace sharp { return static_cast( vips_enum_from_nick(nullptr, type, AttrAsStr(obj, attr).data())); } - Napi::Buffer NewOrCopyBuffer(Napi::Env env, char* data, size_t len); // Create an InputDescriptor instance from a Napi::Object describing an input image InputDescriptor* CreateInputDescriptor(Napi::Object input); diff --git a/src/metadata.cc b/src/metadata.cc index 4cd2ed8d..6bb861f4 100644 --- a/src/metadata.cc +++ b/src/metadata.cc @@ -230,20 +230,21 @@ class MetadataWorker : public Napi::AsyncWorker { info.Set("orientation", baton->orientation); } if (baton->exifLength > 0) { - info.Set("exif", sharp::NewOrCopyBuffer(env, baton->exif, baton->exifLength)); + info.Set("exif", Napi::Buffer::NewOrCopy(env, baton->exif, baton->exifLength, sharp::FreeCallback)); } if (baton->iccLength > 0) { - info.Set("icc", sharp::NewOrCopyBuffer(env, baton->icc, baton->iccLength)); + info.Set("icc", Napi::Buffer::NewOrCopy(env, baton->icc, baton->iccLength, sharp::FreeCallback)); } if (baton->iptcLength > 0) { - info.Set("iptc", sharp::NewOrCopyBuffer(env, baton->iptc, baton->iptcLength)); + info.Set("iptc", Napi::Buffer::NewOrCopy(env, baton->iptc, baton->iptcLength, sharp::FreeCallback)); } if (baton->xmpLength > 0) { - info.Set("xmp", sharp::NewOrCopyBuffer(env, baton->xmp, baton->xmpLength)); + info.Set("xmp", Napi::Buffer::NewOrCopy(env, baton->xmp, baton->xmpLength, sharp::FreeCallback)); } if (baton->tifftagPhotoshopLength > 0) { info.Set("tifftagPhotoshop", - sharp::NewOrCopyBuffer(env, baton->tifftagPhotoshop, baton->tifftagPhotoshopLength)); + Napi::Buffer::NewOrCopy(env, baton->tifftagPhotoshop, + baton->tifftagPhotoshopLength, sharp::FreeCallback)); } Callback().MakeCallback(Receiver().Value(), { env.Null(), info }); } else { diff --git a/src/pipeline.cc b/src/pipeline.cc index f8cdb749..663a202b 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -1233,8 +1233,8 @@ class PipelineWorker : public Napi::AsyncWorker { // Add buffer size to info info.Set("size", static_cast(baton->bufferOutLength)); // Pass ownership of output data to Buffer instance - Napi::Buffer data = sharp::NewOrCopyBuffer(env, static_cast(baton->bufferOut), - baton->bufferOutLength); + Napi::Buffer data = Napi::Buffer::NewOrCopy(env, static_cast(baton->bufferOut), + baton->bufferOutLength, sharp::FreeCallback); Callback().MakeCallback(Receiver().Value(), { env.Null(), data, info }); } else { // Add file size to info