Fix memory leak for data source ensemble summary (#8919)

* Do not create summary case group twice

* Fix memory leak of objects contained in childArrayFields
Use deleteAllChildObjects to delete objects instead of clear()
Rename collection function clear() -> deleteAllChildObjects

* Early exit for empty path

* Reduce redundant calls to refreshMetaData
This commit is contained in:
Magne Sjaastad 2022-05-19 11:51:22 +02:00 committed by GitHub
parent 558d675d44
commit 119367783b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 7 additions and 11 deletions

View File

@ -112,7 +112,6 @@ void RicImportEnsembleFeature::importSingleEnsemble( const QStringList&
if ( cases.empty() ) return;
RicImportSummaryCasesFeature::addSummaryCases( cases );
RimSummaryCaseCollection* ensemble =
RicCreateSummaryCaseCollectionFeature::groupSummaryCases( cases, ensembleName, true );

View File

@ -225,6 +225,7 @@ void RimFileSummaryCase::defineEditorAttribute( const caf::PdmFieldHandle* field
void RimFileSummaryCase::openAndAttachAdditionalReader()
{
QString additionalSummaryFilePath = m_additionalSummaryFilePath().path();
if ( additionalSummaryFilePath.isEmpty() ) return;
cvf::ref<RifOpmCommonEclipseSummary> opmCommonReader = new RifOpmCommonEclipseSummary;
opmCommonReader->useEnhancedSummaryFiles( true );

View File

@ -333,10 +333,10 @@ RimSummaryAddressCollection* RimSummaryAddressCollection::getOrCreateSubfolder(
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryAddressCollection::clear()
void RimSummaryAddressCollection::deleteAllChildObjects()
{
m_adresses.clear();
m_subfolders.clear();
m_adresses.deleteAllChildObjects();
m_subfolders.deleteAllChildObjects();
}
//--------------------------------------------------------------------------------------------------

View File

@ -64,7 +64,7 @@ public:
void updateFolderStructure( const std::set<RifEclipseSummaryAddress>& addresses, int caseId, int ensembleId = -1 );
void clear();
void deleteAllChildObjects();
bool isEmpty() const;
bool isEnsemble() const;

View File

@ -222,7 +222,7 @@ QString RimSummaryCase::errorMessagesFromReader()
//--------------------------------------------------------------------------------------------------
void RimSummaryCase::buildChildNodes()
{
m_dataVectorFolders->clear();
m_dataVectorFolders->deleteAllChildObjects();
RifSummaryReaderInterface* reader = summaryReader();
if ( !reader ) return;
@ -322,8 +322,6 @@ void RimSummaryCase::initAfterRead()
}
updateOptionSensitivity();
refreshMetaData();
}
//--------------------------------------------------------------------------------------------------

View File

@ -1098,5 +1098,5 @@ void RimSummaryCaseCollection::refreshMetaData()
//--------------------------------------------------------------------------------------------------
void RimSummaryCaseCollection::clearChildNodes()
{
m_dataVectorFolders->clear();
m_dataVectorFolders->deleteAllChildObjects();
}

View File

@ -656,7 +656,6 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFro
newSumCase->setAssociatedEclipseCase( eclCase );
newSumCase->updateOptionSensitivity();
project->assignCaseIdToSummaryCase( newSumCase );
newSumCase->refreshMetaData();
sumCases.push_back( newSumCase );
}
else
@ -671,7 +670,6 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFro
newSumCase->setSummaryHeaderFileName( smspecFileName );
newSumCase->updateOptionSensitivity();
project->assignCaseIdToSummaryCase( newSumCase );
newSumCase->refreshMetaData();
sumCases.push_back( newSumCase );
}