From 5c047b977aa4129fa331e233db2ca779ec22273d Mon Sep 17 00:00:00 2001 From: Martyn Gigg <martyn.gigg@gmail.com> Date: Sat, 18 Aug 2018 22:49:37 +0100 Subject: [PATCH] Use unique_ptr over raw new/delete Fixes a memory leak on the exception path. --- .../inc/MantidDataHandling/LoadAscii2.h | 2 +- Framework/DataHandling/src/LoadAscii2.cpp | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadAscii2.h b/Framework/DataHandling/inc/MantidDataHandling/LoadAscii2.h index ea3382e4cd4..f915d9d54bb 100644 --- a/Framework/DataHandling/inc/MantidDataHandling/LoadAscii2.h +++ b/Framework/DataHandling/inc/MantidDataHandling/LoadAscii2.h @@ -120,7 +120,7 @@ private: size_t m_spectrumIDcount; size_t m_lineNo; std::vector<DataObjects::Histogram1D> m_spectra; - DataObjects::Histogram1D *m_curSpectra; + std::unique_ptr<DataObjects::Histogram1D> m_curSpectra; std::vector<double> m_curDx; }; diff --git a/Framework/DataHandling/src/LoadAscii2.cpp b/Framework/DataHandling/src/LoadAscii2.cpp index 9cf20ddc3a4..e53310aa04e 100644 --- a/Framework/DataHandling/src/LoadAscii2.cpp +++ b/Framework/DataHandling/src/LoadAscii2.cpp @@ -79,9 +79,9 @@ API::Workspace_sptr LoadAscii2::readData(std::ifstream &file) { m_spectrumIDcount = 0; m_spectra.clear(); - m_curSpectra = - new DataObjects::Histogram1D(HistogramData::Histogram::XMode::Points, - HistogramData::Histogram::YMode::Counts); + m_curSpectra = Kernel::make_unique<DataObjects::Histogram1D>( + HistogramData::Histogram::XMode::Points, + HistogramData::Histogram::YMode::Counts); std::string line; std::list<std::string> columns; @@ -123,7 +123,7 @@ API::Workspace_sptr LoadAscii2::readData(std::ifstream &file) { << e.what(); throw std::runtime_error(msg.str()); } - delete m_curSpectra; + m_curSpectra.reset(); return localWorkspace; } @@ -514,13 +514,12 @@ void LoadAscii2::newSpectra() { m_curSpectra->setPointStandardDeviations(std::move(m_curDx)); m_spectra.push_back(*m_curSpectra); } - delete m_curSpectra; - m_curSpectra = nullptr; + m_curSpectra.reset(); } - m_curSpectra = - new DataObjects::Histogram1D(HistogramData::Histogram::XMode::Points, - HistogramData::Histogram::YMode::Counts); + m_curSpectra = Kernel::make_unique<DataObjects::Histogram1D>( + HistogramData::Histogram::XMode::Points, + HistogramData::Histogram::YMode::Counts); m_curDx.clear(); m_spectraStart = true; } -- GitLab