mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 07:00:17 -05:00
#12676 Add more guarding on valid data before use
Fix crash situation when computing delta between two large ensembles
This commit is contained in:
1 parent
ff3773c85d
commit
ad08969502
1 file changed
+12
-3
@@ -322,11 +322,17 @@ std::pair<std::vector<time_t>, std::vector<double>> RimDeltaSummaryCase::calcula
|
||||
merger.addCurveData( reader1->timeSteps( address ), values1 );
|
||||
merger.addCurveData( reader2->timeSteps( address ), values2 );
|
||||
merger.computeInterpolatedValues( includeIncompleteCurves );
|
||||
|
||||
const std::vector<double>& allValues1 = merger.interpolatedYValuesForAllXValues( 0 );
|
||||
const std::vector<double>& allValues2 = merger.interpolatedYValuesForAllXValues( 1 );
|
||||
if ( merger.curveCount() < 2 )
|
||||
{
|
||||
// If we have less than two curves, we cannot calculate a delta
|
||||
return ResultPair();
|
||||
}
|
||||
|
||||
size_t sampleCount = merger.allXValues().size();
|
||||
if ( sampleCount == 0 )
|
||||
{
|
||||
return ResultPair();
|
||||
}
|
||||
|
||||
std::vector<double> calculatedValues;
|
||||
calculatedValues.reserve( sampleCount );
|
||||
@@ -334,6 +340,9 @@ std::pair<std::vector<time_t>, std::vector<double>> RimDeltaSummaryCase::calcula
|
||||
int clampedIndexCase1 = std::min( fixedTimeStepCase1, static_cast<int>( values1.size() ) );
|
||||
int clampedIndexCase2 = std::min( fixedTimeStepCase2, static_cast<int>( values2.size() ) );
|
||||
|
||||
const std::vector<double>& allValues1 = merger.interpolatedYValuesForAllXValues( 0 );
|
||||
const std::vector<double>& allValues2 = merger.interpolatedYValuesForAllXValues( 1 );
|
||||
|
||||
for ( size_t i = 0; i < sampleCount; i++ )
|
||||
{
|
||||
double valueCase1 = clampedIndexCase1 >= 0 ? values1[clampedIndexCase1] : allValues1[i];
|
||||
|
||||
Reference in new issue
Block a user