Avoid crash when adding a grid case multiple times

This commit is contained in:
Magne Sjaastad
2022-10-04 18:43:36 +02:00
committed by GitHub
parent 179e269fcc
commit 4a673b7cd5
2 changed files with 26 additions and 7 deletions

View File

@@ -115,8 +115,10 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList&
project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
if ( sumCaseColl )
{
std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createSummaryCasesFromFileInfos( summaryFileInfos );
for ( RimSummaryCase* newSumCase : newSumCases )
std::vector<RimSummaryCase*> candidateCases = sumCaseColl->createSummaryCasesFromFileInfos( summaryFileInfos );
std::vector<RimSummaryCase*> duplicatedCases;
for ( RimSummaryCase* newSumCase : candidateCases )
{
RimSummaryCaseCollection* existingCollection = nullptr;
QString gridCaseFile =
@@ -130,7 +132,7 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList&
auto* existingFileSummaryCase = dynamic_cast<RimFileSummaryCase*>( existingSummaryCase );
if ( existingGridSummaryCase )
{
delete newSumCase; // No need to add anything new. Already have one.
duplicatedCases.push_back( newSumCase );
continue;
}
else if ( existingFileSummaryCase )
@@ -183,7 +185,8 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList&
// Remove existing case
sumCaseColl->removeCase( existingFileSummaryCase );
delete existingFileSummaryCase;
duplicatedCases.push_back( existingFileSummaryCase );
}
}
if ( existingCollection )
@@ -197,10 +200,18 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList&
sumCaseColl->updateAllRequiredEditors();
}
if ( !newSumCases.empty() )
// Delete cases that already was present
for ( auto duplicateCase : duplicatedCases )
{
RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPlot( { newSumCases.front() }, {} );
RiuPlotMainWindowTools::setExpanded( newSumCases.front() );
candidateCases.erase( std::remove( candidateCases.begin(), candidateCases.end(), duplicateCase ),
candidateCases.end() );
delete duplicateCase;
}
if ( !candidateCases.empty() )
{
RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPlot( { candidateCases.front() }, {} );
RiuPlotMainWindowTools::setExpanded( candidateCases.front() );
}
}
}