Pass delete[] explicitely to Nan::NewBuffer.

Use the Nan::NewBuffer version that accepts an explicit callback
deallocating buffers. This way we'll be resilient to different nan/node
versions.

Fixes grpc/grpc#4867
This commit is contained in:
Patryk Lesiewicz 2016-02-10 11:27:44 -08:00
parent c1d0627312
commit ca2ec213e3
1 changed files with 5 additions and 1 deletions

View File

@ -63,6 +63,10 @@ grpc_byte_buffer *BufferToByteBuffer(Local<Value> buffer) {
return byte_buffer; return byte_buffer;
} }
namespace {
void delete_buffer(char *data, void *hint) { delete[] data; }
}
Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) { Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) {
Nan::EscapableHandleScope scope; Nan::EscapableHandleScope scope;
if (buffer == NULL) { if (buffer == NULL) {
@ -80,7 +84,7 @@ Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) {
gpr_slice_unref(next); gpr_slice_unref(next);
} }
return scope.Escape(MakeFastBuffer( return scope.Escape(MakeFastBuffer(
Nan::NewBuffer(result, length).ToLocalChecked())); Nan::NewBuffer(result, length, delete_buffer, NULL).ToLocalChecked()));
} }
Local<Value> MakeFastBuffer(Local<Value> slowBuffer) { Local<Value> MakeFastBuffer(Local<Value> slowBuffer) {