diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/FuncMinimizers/LevenbergMarquardtMinimizer.h b/Framework/CurveFitting/inc/MantidCurveFitting/FuncMinimizers/LevenbergMarquardtMinimizer.h index 0eb61f9101610dbfdbc940e2814ceed65a745b94..693118aacc9d76f6dcd31846a975767770fab373 100644 --- a/Framework/CurveFitting/inc/MantidCurveFitting/FuncMinimizers/LevenbergMarquardtMinimizer.h +++ b/Framework/CurveFitting/inc/MantidCurveFitting/FuncMinimizers/LevenbergMarquardtMinimizer.h @@ -47,7 +47,7 @@ private: int hasConverged(); /// GSL data container - GSL_FitData *m_data; + std::unique_ptr<GSL_FitData> m_data; /// GSL minimizer container gsl_multifit_function_fdf gslContainer; diff --git a/Framework/CurveFitting/src/FuncMinimizers/LevenbergMarquardtMinimizer.cpp b/Framework/CurveFitting/src/FuncMinimizers/LevenbergMarquardtMinimizer.cpp index c70d8e809d71eff8f2ef3fcea483cd43c3c053e7..8685dc4ce45ddf8d489c38e8700515c574f0e008 100644 --- a/Framework/CurveFitting/src/FuncMinimizers/LevenbergMarquardtMinimizer.cpp +++ b/Framework/CurveFitting/src/FuncMinimizers/LevenbergMarquardtMinimizer.cpp @@ -60,7 +60,7 @@ void LevenbergMarquardtMinimizer::initialize( boost::dynamic_pointer_cast<CostFunctions::CostFuncLeastSquares>( costFunction); if (leastSquares) { - m_data = new GSL_FitData(leastSquares); + m_data = std::make_unique<GSL_FitData>(leastSquares); } else { throw std::runtime_error("LevenbergMarquardt can only be used with Least " "squares cost function."); @@ -73,9 +73,10 @@ void LevenbergMarquardtMinimizer::initialize( gslContainer.f = &gsl_f; gslContainer.df = &gsl_df; gslContainer.fdf = &gsl_fdf; + gslContainer.n = m_data->n; gslContainer.p = m_data->p; - gslContainer.params = m_data; + gslContainer.params = m_data.get(); // setup GSL solver m_gslSolver = gsl_multifit_fdfsolver_alloc(T, m_data->n, m_data->p); @@ -92,9 +93,6 @@ void LevenbergMarquardtMinimizer::initialize( } LevenbergMarquardtMinimizer::~LevenbergMarquardtMinimizer() { - if (m_data) { - delete m_data; - } if (m_gslSolver) { gsl_multifit_fdfsolver_free(m_gslSolver); } diff --git a/Framework/DataHandling/src/LoadNexusMonitors2.cpp b/Framework/DataHandling/src/LoadNexusMonitors2.cpp index c7170e43299e8ffaa40369047ac9abd008b66472..5c81269974d0d96aca485f9f03f40a29267f4a28 100644 --- a/Framework/DataHandling/src/LoadNexusMonitors2.cpp +++ b/Framework/DataHandling/src/LoadNexusMonitors2.cpp @@ -426,9 +426,9 @@ void LoadNexusMonitors2::runLoadLogs(const std::string filename, **/ bool LoadNexusMonitors2::canOpenAsNeXus(const std::string &fname) { bool res = true; - ::NeXus::File *f = nullptr; + std::unique_ptr<::NeXus::File> f = nullptr; try { - f = new ::NeXus::File(fname); + f = std::make_unique<::NeXus::File>(fname); if (f) f->getEntries(); } catch (::NeXus::Exception &e) { @@ -436,9 +436,6 @@ bool LoadNexusMonitors2::canOpenAsNeXus(const std::string &fname) { << "', error description: " << e.what() << '\n'; res = false; } - if (f) - delete f; - return res; } //------------------------------------------------------------------------------ diff --git a/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h b/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h index 1455b821bc1866612083ea4daaf0687992da07f2..e13c043b9f47e70ec88fe986a7d1a206e2282e8f 100644 --- a/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h +++ b/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h @@ -140,7 +140,7 @@ protected: uint64_t m_max; /// Implicit function to limit volume searched - Mantid::Geometry::MDImplicitFunction *m_function; + std::unique_ptr<Mantid::Geometry::MDImplicitFunction> m_function; /// Number of dimensions size_t m_nd; diff --git a/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp b/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp index bb6280ec1429c66c737dceec01f2fd7f9fc9152a..6e0e88ac766730f2abc6edd6e412506f1a48bf1a 100644 --- a/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp +++ b/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp @@ -168,7 +168,7 @@ void MDHistoWorkspaceIterator::init( m_begin = beginPos; m_pos = m_begin; - m_function = function; + m_function.reset(function); m_max = endPos; if (m_max > m_ws->getNPoints()) @@ -249,12 +249,7 @@ MDHistoWorkspaceIterator::~MDHistoWorkspaceIterator() { delete[] m_index; delete[] m_indexMax; delete[] m_indexMaker; - - if (m_function) - delete m_function; - m_function = nullptr; } - //---------------------------------------------------------------------------------------------- /** @return the number of points to be iterated on */ size_t MDHistoWorkspaceIterator::getDataSize() const {