aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2017-11-28 08:24:10 -0800
committerGravatar Mark D. Roth <roth@google.com>2017-11-28 08:24:10 -0800
commitabadc6c5168f9429173751f1fb4ed225942d6f8c (patch)
treef94772a2a7be1ad27be227fb4cc72312cac0531b /src
parent70db663ae8773dc45464c904603a3e73045b45c5 (diff)
Use New() and Delete() instead of C++ new and delete.
Diffstat (limited to 'src')
-rw-r--r--src/core/lib/support/reference_counted.cc4
-rw-r--r--src/core/lib/support/reference_counted.h4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/core/lib/support/reference_counted.cc b/src/core/lib/support/reference_counted.cc
index 853a29da2f..84ede18efe 100644
--- a/src/core/lib/support/reference_counted.cc
+++ b/src/core/lib/support/reference_counted.cc
@@ -20,6 +20,8 @@
#include <grpc/support/log.h>
+#include "src/core/lib/support/memory.h"
+
namespace grpc_core {
void ReferenceCounted::Ref(const DebugLocation& location, const char* reason) {
@@ -49,7 +51,7 @@ bool ReferenceCounted::Unref(const DebugLocation& location,
bool ReferenceCounted::Unref() {
if (gpr_unref(&refs_)) {
- delete this;
+ Delete(this);
return true;
}
return false;
diff --git a/src/core/lib/support/reference_counted.h b/src/core/lib/support/reference_counted.h
index ebd620c553..e71b4fc593 100644
--- a/src/core/lib/support/reference_counted.h
+++ b/src/core/lib/support/reference_counted.h
@@ -39,6 +39,10 @@ class ReferenceCounted {
ReferenceCounted& operator=(const ReferenceCounted&) = delete;
protected:
+ // Allow Delete() to access destructor.
+ template<typename T>
+ friend void Delete(T*);
+
explicit ReferenceCounted(TraceFlag* trace_flag) : trace_flag_(trace_flag) {
gpr_ref_init(&refs_, 1);
}