#12535 Avoid use of caf::PdmPointer in async delete of objects

Remove the use of caf::PdmPointer in RifCalculatedSummaryCurveReader as these objects are only accessed and used only during the lifetime of the owning object.

Move caching of RimProject::current()->calculationCollection() to the constructor instead of the calling site.
This commit is contained in:
Magne Sjaastad committed 2025-05-30 08:41:14 +02:00
1 parent fe9cac4fba
commit 5ba4256e8b
5 files changed
+12 -19

No files matched your search

@@ -19,6 +19,8 @@
#include "RimCalculatedSummaryCurveReader.h" #include "RimCalculatedSummaryCurveReader.h"
#include "RifEclipseSummaryAddress.h" #include "RifEclipseSummaryAddress.h"
#include "RimProject.h"
#include "RimSummaryCalculation.h" #include "RimSummaryCalculation.h"
#include "RimSummaryCalculationCollection.h" #include "RimSummaryCalculationCollection.h"
#include "RimUserDefinedCalculation.h" #include "RimUserDefinedCalculation.h"
@@ -26,9 +28,8 @@
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCalculationCollection* calculationCollection, RifCalculatedSummaryCurveReader::RifCalculatedSummaryCurveReader( RimSummaryCase* summaryCase )
RimSummaryCase* summaryCase ) : m_calculationCollection( RimProject::current()->calculationCollection() )
: m_calculationCollection( calculationCollection )
, m_summaryCase( summaryCase ) , m_summaryCase( summaryCase )
{ {
CAF_ASSERT( summaryCase ); CAF_ASSERT( summaryCase );
@@ -85,6 +86,8 @@ void RifCalculatedSummaryCurveReader::buildMetaData()
{ {
m_allResultAddresses.clear(); m_allResultAddresses.clear();
if ( !m_calculationCollection || !m_summaryCase ) return;
for ( RimUserDefinedCalculation* calc : m_calculationCollection->calculations() ) for ( RimUserDefinedCalculation* calc : m_calculationCollection->calculations() )
{ {
auto* sumCalc = dynamic_cast<RimSummaryCalculation*>( calc ); auto* sumCalc = dynamic_cast<RimSummaryCalculation*>( calc );
@@ -21,8 +21,6 @@
#include "RifSummaryReaderInterface.h" #include "RifSummaryReaderInterface.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include <memory>
class RifCalculatedSummaryCurveReader; class RifCalculatedSummaryCurveReader;
class RimSummaryCalculation; class RimSummaryCalculation;
class RimSummaryCalculationCollection; class RimSummaryCalculationCollection;
@@ -33,7 +31,7 @@ class RimSummaryCalculationCollection;
class RifCalculatedSummaryCurveReader : public RifSummaryReaderInterface class RifCalculatedSummaryCurveReader : public RifSummaryReaderInterface
{ {
public: public:
explicit RifCalculatedSummaryCurveReader( RimSummaryCalculationCollection* calculationCollection, RimSummaryCase* summaryCase ); explicit RifCalculatedSummaryCurveReader( RimSummaryCase* summaryCase );
std::vector<time_t> timeSteps( const RifEclipseSummaryAddress& resultAddress ) const override; std::vector<time_t> timeSteps( const RifEclipseSummaryAddress& resultAddress ) const override;
std::pair<bool, std::vector<double>> values( const RifEclipseSummaryAddress& resultAddress ) const override; std::pair<bool, std::vector<double>> values( const RifEclipseSummaryAddress& resultAddress ) const override;
@@ -47,6 +45,6 @@ private:
RimSummaryCalculation* findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const; RimSummaryCalculation* findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const;
private: private:
caf::PdmPointer<RimSummaryCalculationCollection> m_calculationCollection; RimSummaryCalculationCollection* m_calculationCollection;
caf::PdmPointer<RimSummaryCase> m_summaryCase; RimSummaryCase* m_summaryCase;
}; };
@@ -30,8 +30,6 @@
#include "SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeatureUi.h" #include "SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeatureUi.h"
#include "RimCalculatedSummaryCurveReader.h" #include "RimCalculatedSummaryCurveReader.h"
#include "RimProject.h"
#include "RimSummaryCalculationCollection.h"
#include "cafUtils.h" #include "cafUtils.h"
@@ -76,8 +74,7 @@ void RimCsvUserData::createSummaryReaderInterface()
m_multiSummaryReader = new RifMultipleSummaryReaders; m_multiSummaryReader = new RifMultipleSummaryReaders;
m_multiSummaryReader->addReader( m_summaryReader.p() ); m_multiSummaryReader->addReader( m_summaryReader.p() );
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection(); m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( this );
m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( calcColl, this );
m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() ); m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() );
} }
@@ -33,7 +33,6 @@
#include "RimCalculatedSummaryCurveReader.h" #include "RimCalculatedSummaryCurveReader.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimRftCase.h" #include "RimRftCase.h"
#include "RimSummaryCalculationCollection.h"
#include "cafPdmFieldScriptingCapability.h" #include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h" #include "cafPdmObjectScriptingCapability.h"
@@ -113,8 +112,7 @@ void RimFileSummaryCase::createSummaryReaderInterfaceThreadSafe( RiaThreadSafeLo
openAndAttachAdditionalReader(); openAndAttachAdditionalReader();
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection(); m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( this );
m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( calcColl, this );
m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() ); m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() );
} }
@@ -28,8 +28,6 @@
#include "RifSummaryReaderInterface.h" #include "RifSummaryReaderInterface.h"
#include "RimCalculatedSummaryCurveReader.h" #include "RimCalculatedSummaryCurveReader.h"
#include "RimProject.h"
#include "RimSummaryCalculationCollection.h"
#include "cafUtils.h" #include "cafUtils.h"
@@ -97,8 +95,7 @@ void RimObservedEclipseUserData::createSummaryReaderInterface()
m_multiSummaryReader = new RifMultipleSummaryReaders; m_multiSummaryReader = new RifMultipleSummaryReaders;
m_multiSummaryReader->addReader( m_summaryReader.p() ); m_multiSummaryReader->addReader( m_summaryReader.p() );
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection(); m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( this );
m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( calcColl, this );
m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() ); m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() );
} }