mirror of
https://github.com/OPM/ResInsight.git
synced 2026-08-27 05:37:21 -05:00
#13874 CorrelationPlot: Fix crash when text parameters are present in ensemble
Add parameter.isNumeric() guard and bounds check in RimCorrelationMatrixPlot::createMatrix(). Text parameters deduplicate values into fewer entries than ensemble cases, causing out-of-bounds access. Add defensive bounds check in RimParameterResultCrossPlot::createCaseData() for consistency.
This commit is contained in:
@@ -511,7 +511,7 @@ void RimCorrelationMatrixPlot::createMatrix()
|
||||
|
||||
RigEnsembleParameter parameter = ensemble->ensembleParameter( paramName );
|
||||
|
||||
if ( parameter.isValid() )
|
||||
if ( parameter.isValid() && parameter.isNumeric() )
|
||||
{
|
||||
double correlation = std::numeric_limits<double>::infinity();
|
||||
|
||||
@@ -520,6 +520,8 @@ void RimCorrelationMatrixPlot::createMatrix()
|
||||
auto summaryCase = ensemble->allSummaryCases()[caseIdx];
|
||||
if ( activeCases.count( summaryCase ) == 0 ) continue;
|
||||
|
||||
if ( caseIdx >= parameter.values.size() ) continue;
|
||||
|
||||
RifSummaryReaderInterface* reader = summaryCase->summaryReader();
|
||||
if ( reader )
|
||||
{
|
||||
|
||||
+1
-1
@@ -514,7 +514,7 @@ std::vector<RimParameterResultCrossPlot::CaseData> RimParameterResultCrossPlot::
|
||||
}
|
||||
}
|
||||
|
||||
if ( summaryValue != std::numeric_limits<double>::infinity() )
|
||||
if ( summaryValue != std::numeric_limits<double>::infinity() && caseIdx < parameter.values.size() )
|
||||
{
|
||||
caseData.push_back(
|
||||
{ .parameterValue = parameter.values[caseIdx].toDouble(), .summaryValue = summaryValue, .summaryCase = summaryCase } );
|
||||
|
||||
Reference in New Issue
Block a user