diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-12-22 03:01:28 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-12-26 14:46:26 +0100 |
commit | b4145b89593a24006c8b4223b7aa40c18b2b588b (patch) | |
tree | e2ed39adeb37bcd56a7a001ccb1dd6d8b82cdd92 /src | |
parent | d93f93aa99aead77fb52d16a0d8f7d9af047a69a (diff) | |
download | android-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.cc | 9 |
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_; |