summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-12-22 03:01:28 +0100
committerAnna Henningsen <anna@addaleax.net>2018-12-26 14:46:26 +0100
commitb4145b89593a24006c8b4223b7aa40c18b2b588b (patch)
treee2ed39adeb37bcd56a7a001ccb1dd6d8b82cdd92 /src
parentd93f93aa99aead77fb52d16a0d8f7d9af047a69a (diff)
downloadandroid-node-v8-b4145b89593a24006c8b4223b7aa40c18b2b588b.tar.gz
android-node-v8-b4145b89593a24006c8b4223b7aa40c18b2b588b.tar.bz2
android-node-v8-b4145b89593a24006c8b4223b7aa40c18b2b588b.zip
src: do not leak NodeTraceStateObserver
This would otherwise be reported as a memory leak by automated tools. PR-URL: https://github.com/nodejs/node/pull/25180 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/node.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/node.cc b/src/node.cc
index e9e745d9de..91190788b2 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -198,7 +198,6 @@ class NodeTraceStateObserver :
// This only runs the first time tracing is enabled
controller_->RemoveTraceStateObserver(this);
- delete this;
}
void OnTraceDisabled() override {
@@ -220,8 +219,10 @@ static struct {
void Initialize(int thread_pool_size) {
tracing_agent_.reset(new tracing::Agent());
node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get());
- auto controller = tracing_agent_->GetTracingController();
- controller->AddTraceStateObserver(new NodeTraceStateObserver(controller));
+ node::tracing::TracingController* controller =
+ tracing_agent_->GetTracingController();
+ trace_state_observer_.reset(new NodeTraceStateObserver(controller));
+ controller->AddTraceStateObserver(trace_state_observer_.get());
StartTracingAgent();
// Tracing must be initialized before platform threads are created.
platform_ = new NodePlatform(thread_pool_size, controller);
@@ -235,6 +236,7 @@ static struct {
// Destroy tracing after the platform (and platform threads) have been
// stopped.
tracing_agent_.reset(nullptr);
+ trace_state_observer_.reset(nullptr);
}
void DrainVMTasks(Isolate* isolate) {
@@ -287,6 +289,7 @@ static struct {
return platform_;
}
+ std::unique_ptr<NodeTraceStateObserver> trace_state_observer_;
std::unique_ptr<tracing::Agent> tracing_agent_;
tracing::AgentWriterHandle tracing_file_writer_;
NodePlatform* platform_;