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