From 777777efa4e23668dd5b23ed85e94d66c3f17af2 Mon Sep 17 00:00:00 2001
From: Patryk Lesiewicz <patryk@google.com>
Date: Wed, 10 Feb 2016 11:27:44 -0800
Subject: [PATCH] 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
---
 src/node/ext/byte_buffer.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/node/ext/byte_buffer.cc b/src/node/ext/byte_buffer.cc
index ee703fdc91..0f7edada14 100644
--- a/src/node/ext/byte_buffer.cc
+++ b/src/node/ext/byte_buffer.cc
@@ -63,6 +63,10 @@ grpc_byte_buffer *BufferToByteBuffer(Local<Value> buffer) {
   return byte_buffer;
 }
 
+namespace {
+void delete_buffer(char *data, void *hint) { delete[] data; }
+}
+
 Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) {
   Nan::EscapableHandleScope scope;
   if (buffer == NULL) {
@@ -80,7 +84,7 @@ Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) {
     gpr_slice_unref(next);
   }
   return scope.Escape(MakeFastBuffer(
-      Nan::NewBuffer(result, length).ToLocalChecked()));
+      Nan::NewBuffer(result, length, delete_buffer, NULL).ToLocalChecked()));
 }
 
 Local<Value> MakeFastBuffer(Local<Value> slowBuffer) {
-- 
GitLab