Fix crash when width data is missing in ensemble fracture statistics

Conductivity and width grids were built as separate lists; a missing width
grid shortened one list and widthGrids[i] went out of range. Build the grids
per definition so they stay paired.

Crash stack (signature 642357244e71):
[3] cvf::cref<RigFractureGrid>::cref(cvf::cref<RigFractureGrid> const&) at cvfObject.inl:410
[4] RigEnsembleFractureStatisticsCalculator::calculateProperty(...) at RigEnsembleFractureStatisticsCalculator.cpp:156
[5] RimStimPlanFractureTemplate::generatePropertiesTable() const at RimStimPlanFractureTemplate.cpp:791
[6] RimStimPlanFractureTemplate::loadDataAndUpdate() at RimStimPlanFractureTemplate.cpp:221
[7] RicMeshFractureTemplateHelper<RimStimPlanFractureTemplate>::createNewTemplatesFromFiles(...) at RicMeshFractureTemplateHelper.inl:149
[8] RicMeshFractureTemplateHelper<RimStimPlanFractureTemplate>::createNewTemplates(...) at RicMeshFractureTemplateHelper.inl:89
[9] RicNewStimPlanFractureTemplateFeature::createNewTemplates() at RicNewStimPlanFractureTemplateFeature.cpp:58
[10] RicNewStimPlanFractureTemplateFeature::onActionTriggered(bool) at RicNewStimPlanFractureTemplateFeature.cpp:78
This commit is contained in:
Magne Sjaastad committed 2026-10-19 19:58:37 +02:00
1 parent c7473c2549
commit 72df8a69f5
2 files changed
+39 -16

No files matched your search

@@ -51,3 +51,24 @@ TEST( RigEnsembleFractureStatisticsCalculatorTest, EmptyDefinitionsProduceInvali
EXPECT_FALSE( histogramData.isHistogramVectorValid() );
}
}
//--------------------------------------------------------------------------------------------------
/// A definition with conductivity data but no width data must not produce mismatched grid lists
//--------------------------------------------------------------------------------------------------
TEST( RigEnsembleFractureStatisticsCalculatorTest, MissingWidthDataDoesNotCrash )
{
cvf::ref<RigStimPlanFractureDefinition> definition = new RigStimPlanFractureDefinition;
definition->addTimeStep( 1.0 );
definition->setDataAtTimeValue( "Conductivity", "md-m", { { 1.0, 1.0 }, { 1.0, 1.0 } }, 1.0 );
std::vector<cvf::ref<RigStimPlanFractureDefinition>> definitions = { definition };
auto width = RigEnsembleFractureStatisticsCalculator::calculateProperty( definitions,
RigEnsembleFractureStatisticsCalculator::PropertyType::WIDTH );
EXPECT_TRUE( width.empty() );
auto permeability =
RigEnsembleFractureStatisticsCalculator::calculateProperty( definitions,
RigEnsembleFractureStatisticsCalculator::PropertyType::PERMEABILITY );
EXPECT_TRUE( permeability.empty() );
}