From 5e7394932788cda9f33d9855c89810f8960ba91b Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Mon, 30 Dec 2019 11:17:43 -0800 Subject: [PATCH] Fix memory leak in initializing log writers with no local backend --- src/logging/WriterFrontend.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/logging/WriterFrontend.cc b/src/logging/WriterFrontend.cc index fdc4a7a97b..342c4f06a6 100644 --- a/src/logging/WriterFrontend.cc +++ b/src/logging/WriterFrontend.cc @@ -133,6 +133,11 @@ WriterFrontend::WriterFrontend(const WriterBackend::WriterInfo& arg_info, EnumVa WriterFrontend::~WriterFrontend() { + for ( auto i = 0; i < num_fields; ++i ) + delete fields[i]; + + delete [] fields; + Unref(stream); Unref(writer); delete info; @@ -165,7 +170,14 @@ void WriterFrontend::Init(int arg_num_fields, const Field* const * arg_fields) initialized = true; if ( backend ) - backend->SendIn(new InitMessage(backend, arg_num_fields, arg_fields)); + { + auto fs = new Field*[num_fields]; + + for ( auto i = 0; i < num_fields; ++i ) + fs[i] = new Field(*fields[i]); + + backend->SendIn(new InitMessage(backend, arg_num_fields, fs)); + } if ( remote ) {