Merge pull request #41 from hrsakai/avoid-free

[Issue #39]Add skip flag for cMessageId free
diff --git a/src/MessageId.cc b/src/MessageId.cc
index 62cd1c8..ee6952c 100644
--- a/src/MessageId.cc
+++ b/src/MessageId.cc
@@ -70,6 +70,7 @@
   Napi::Object obj = NewInstance(info[0]);
   MessageId *msgId = Unwrap(obj);
   msgId->cMessageId = (pulsar_message_id_t *)pulsar_message_id_earliest();
+  msgId->skipCMessageIdFree = true;
   return obj;
 }
 
@@ -77,6 +78,7 @@
   Napi::Object obj = NewInstance(info[0]);
   MessageId *msgId = Unwrap(obj);
   msgId->cMessageId = (pulsar_message_id_t *)pulsar_message_id_latest();
+  msgId->skipCMessageIdFree = true;
   return obj;
 }
 
@@ -113,4 +115,8 @@
   return Napi::String::New(info.Env(), pulsar_message_id_str(this->cMessageId));
 }
 
-MessageId::~MessageId() { pulsar_message_id_free(this->cMessageId); }
+MessageId::~MessageId() {
+  if (!this->skipCMessageIdFree) {
+    pulsar_message_id_free(this->cMessageId);
+  }
+}
diff --git a/src/MessageId.h b/src/MessageId.h
index f65b1b4..0a5300b 100644
--- a/src/MessageId.h
+++ b/src/MessageId.h
@@ -41,6 +41,7 @@
  private:
   static Napi::FunctionReference constructor;
   pulsar_message_id_t *cMessageId;
+  bool skipCMessageIdFree = false;
 
   Napi::Value ToString(const Napi::CallbackInfo &info);
 };