You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2019/06/28 01:29:11 UTC

[trafficserver] branch master updated: Add ats_unique_buf

This is an automated email from the ASF dual-hosted git repository.

maskit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new d2e6a9e  Add ats_unique_buf
d2e6a9e is described below

commit d2e6a9e4b49b73704db1ba8333bd6e0ab6c4ee79
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Tue Jun 25 17:00:58 2019 +0900

    Add ats_unique_buf
---
 include/tscore/ink_memory.h | 13 +++++++++++++
 src/tscore/ink_memory.cc    |  6 ++++++
 2 files changed, 19 insertions(+)

diff --git a/include/tscore/ink_memory.h b/include/tscore/ink_memory.h
index d024111..713cb02 100644
--- a/include/tscore/ink_memory.h
+++ b/include/tscore/ink_memory.h
@@ -141,6 +141,8 @@ char *_xstrdup(const char *str, int length, const char *path);
 
 #ifdef __cplusplus
 
+#include <memory>
+
 // this is to help with migration to a std::string issue with older code that
 // expects char* being copied. As more code moves to std::string, this can be
 // removed to avoid these extra copies.
@@ -618,4 +620,15 @@ path_join(ats_scoped_str const &lhs, ats_scoped_str const &rhs)
 
   return x.release();
 }
+
+struct ats_unique_buf_deleter {
+  void
+  operator()(uint8_t *p)
+  {
+    ats_free(p);
+  }
+};
+using ats_unique_buf = std::unique_ptr<uint8_t[], ats_unique_buf_deleter>;
+ats_unique_buf ats_unique_malloc(size_t size);
+
 #endif /* __cplusplus */
diff --git a/src/tscore/ink_memory.cc b/src/tscore/ink_memory.cc
index aca92b8..b34a726 100644
--- a/src/tscore/ink_memory.cc
+++ b/src/tscore/ink_memory.cc
@@ -161,6 +161,12 @@ ats_mallopt(int param ATS_UNUSED, int value ATS_UNUSED)
   return 0;
 }
 
+ats_unique_buf
+ats_unique_malloc(size_t size)
+{
+  return ats_unique_buf(static_cast<uint8_t *>(ats_malloc(size)));
+}
+
 int
 ats_msync(caddr_t addr, size_t len, caddr_t end, int flags)
 {