From 474f53b13835b5f42e0ef86947497eba28b45441 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 14 Sep 2015 13:53:07 -0700
Subject: [PATCH] Fixed Op destructors not being called

---
 src/node/ext/call.cc | 5 ++++-
 src/node/ext/call.h  | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc
index 560869e6fa..49b306202b 100644
--- a/src/node/ext/call.cc
+++ b/src/node/ext/call.cc
@@ -172,6 +172,9 @@ Handle<Value> Op::GetOpType() const {
   return NanEscapeScope(NanNew<String>(GetTypeString()));
 }
 
+Op::~Op() {
+}
+
 class SendMetadataOp : public Op {
  public:
   Handle<Value> GetNodeValue() const {
@@ -325,7 +328,7 @@ class ReadMessageOp : public Op {
   }
   ~ReadMessageOp() {
     if (recv_message != NULL) {
-      gpr_free(recv_message);
+      grpc_byte_buffer_destroy(recv_message);
     }
   }
   Handle<Value> GetNodeValue() const {
diff --git a/src/node/ext/call.h b/src/node/ext/call.h
index 89f81dcf4d..a01f03489e 100644
--- a/src/node/ext/call.h
+++ b/src/node/ext/call.h
@@ -88,6 +88,7 @@ struct Resources {
 
 class Op {
  public:
+  virtual ~Op();
   virtual v8::Handle<v8::Value> GetNodeValue() const = 0;
   virtual bool ParseOp(v8::Handle<v8::Value> value, grpc_op *out,
                        shared_ptr<Resources> resources) = 0;
@@ -98,7 +99,6 @@ class Op {
 };
 
 typedef std::vector<unique_ptr<Op>> OpVec;
-
 struct tag {
   tag(NanCallback *callback, OpVec *ops,
       shared_ptr<Resources> resources);
-- 
GitLab