mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 18:40:16 +02:00
Handle zero-length Buffers in Node.js v13.2.0+
These now use nullptr internally - see https://github.com/nodejs/node/pull/30339
This commit is contained in:
parent
bb15cd9067
commit
400ef71b6f
@ -6,6 +6,8 @@ Requires libvips v8.8.1.
|
|||||||
|
|
||||||
#### v0.23.4 - TBD
|
#### v0.23.4 - TBD
|
||||||
|
|
||||||
|
* Handle zero-length Buffer objects when using Node.js v13.2.0+.
|
||||||
|
|
||||||
* Improve thread safety by using copy-on-write when updating metadata.
|
* Improve thread safety by using copy-on-write when updating metadata.
|
||||||
[#1986](https://github.com/lovell/sharp/issues/1986)
|
[#1986](https://github.com/lovell/sharp/issues/1986)
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ namespace sharp {
|
|||||||
v8::Local<v8::Object> buffer = AttrAs<v8::Object>(input, "buffer");
|
v8::Local<v8::Object> buffer = AttrAs<v8::Object>(input, "buffer");
|
||||||
descriptor->bufferLength = node::Buffer::Length(buffer);
|
descriptor->bufferLength = node::Buffer::Length(buffer);
|
||||||
descriptor->buffer = node::Buffer::Data(buffer);
|
descriptor->buffer = node::Buffer::Data(buffer);
|
||||||
|
descriptor->isBuffer = TRUE;
|
||||||
buffersToPersist.push_back(buffer);
|
buffersToPersist.push_back(buffer);
|
||||||
}
|
}
|
||||||
descriptor->failOnError = AttrTo<bool>(input, "failOnError");
|
descriptor->failOnError = AttrTo<bool>(input, "failOnError");
|
||||||
@ -246,7 +247,7 @@ namespace sharp {
|
|||||||
std::tuple<VImage, ImageType> OpenInput(InputDescriptor *descriptor, VipsAccess accessMethod) {
|
std::tuple<VImage, ImageType> OpenInput(InputDescriptor *descriptor, VipsAccess accessMethod) {
|
||||||
VImage image;
|
VImage image;
|
||||||
ImageType imageType;
|
ImageType imageType;
|
||||||
if (descriptor->buffer != nullptr) {
|
if (descriptor->isBuffer) {
|
||||||
if (descriptor->rawChannels > 0) {
|
if (descriptor->rawChannels > 0) {
|
||||||
// Raw, uncompressed pixel data
|
// Raw, uncompressed pixel data
|
||||||
image = VImage::new_from_memory(descriptor->buffer, descriptor->bufferLength,
|
image = VImage::new_from_memory(descriptor->buffer, descriptor->bufferLength,
|
||||||
|
@ -49,6 +49,7 @@ namespace sharp {
|
|||||||
char *buffer;
|
char *buffer;
|
||||||
bool failOnError;
|
bool failOnError;
|
||||||
size_t bufferLength;
|
size_t bufferLength;
|
||||||
|
bool isBuffer;
|
||||||
double density;
|
double density;
|
||||||
int rawChannels;
|
int rawChannels;
|
||||||
int rawWidth;
|
int rawWidth;
|
||||||
@ -64,6 +65,7 @@ namespace sharp {
|
|||||||
buffer(nullptr),
|
buffer(nullptr),
|
||||||
failOnError(TRUE),
|
failOnError(TRUE),
|
||||||
bufferLength(0),
|
bufferLength(0),
|
||||||
|
isBuffer(FALSE),
|
||||||
density(72.0),
|
density(72.0),
|
||||||
rawChannels(0),
|
rawChannels(0),
|
||||||
rawWidth(0),
|
rawWidth(0),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user