From bd152e093832fec2ef1ac28e65e648de343d9737 Mon Sep 17 00:00:00 2001 From: Dmitry Yurov <d.yurov@fz-juelich.de> Date: Mon, 29 Jan 2018 14:34:15 +0100 Subject: [PATCH] Fixed memory leak in SpecularSimulation::getIntensityData Redmine: #1860 --- Core/Simulation/SpecularSimulation.cpp | 4 ++-- Core/Simulation/SpecularSimulation.h | 2 +- Wrap/swig/libBornAgainCore.i | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Core/Simulation/SpecularSimulation.cpp b/Core/Simulation/SpecularSimulation.cpp index f2a41d1c272..3d82b6700e5 100644 --- a/Core/Simulation/SpecularSimulation.cpp +++ b/Core/Simulation/SpecularSimulation.cpp @@ -190,9 +190,9 @@ void SpecularSimulation::addParameterDistribution(const ParameterDistribution& p Simulation::addParameterDistribution(par_distr); } -Histogram1D* SpecularSimulation::getIntensityData() const +Histogram1D* SpecularSimulation::getIntensityData(AxesUnits units_type) const { - std::unique_ptr<OutputData<double>> result(getDetectorIntensity()); + std::unique_ptr<OutputData<double>> result(getDetectorIntensity(units_type)); return new Histogram1D(*result); } diff --git a/Core/Simulation/SpecularSimulation.h b/Core/Simulation/SpecularSimulation.h index c6bdf413dc5..aa617c799d7 100644 --- a/Core/Simulation/SpecularSimulation.h +++ b/Core/Simulation/SpecularSimulation.h @@ -66,7 +66,7 @@ public: void addParameterDistribution(const ParameterDistribution& par_distr) override; //! Returns detector signal (\f$ \propto |R|^2\f$) in the form of 1D Histogram - Histogram1D* getIntensityData() const; + Histogram1D* getIntensityData(AxesUnits units_type = AxesUnits::DEFAULT) const; private: typedef complex_t (ILayerRTCoefficients::*DataGetter)() const; diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i index e484d3081d9..6110d5946bd 100644 --- a/Wrap/swig/libBornAgainCore.i +++ b/Wrap/swig/libBornAgainCore.i @@ -232,8 +232,7 @@ %newobject OffSpecSimulation::getDetectorIntensity(AxesUnits units_type = AxesUnits::DEFAULT) const; %newobject SpecularSimulation::getDetectorIntensity(AxesUnits units_type = AxesUnits::DEFAULT) const; -%newobject SpecularSimulation::reflectivity() const; -%newobject SpecularSimulation::transmissivity() const; +%newobject SpecularSimulation::getIntensityData(AxesUnits units_type = AxesUnits::DEFAULT) const; %newobject IntensityDataIOFactory::readOutputData(const std::string& file_name); %newobject IntensityDataIOFactory::readIntensityData(const std::string& file_name); -- GitLab