Fix crashes in Grid Cross Plot when deleting curve sets

This commit is contained in:
Gaute Lindkvist
2019-03-27 09:39:13 +01:00
parent 8173cb88ee
commit 2b2323a1b6
2 changed files with 11 additions and 3 deletions

View File

@@ -97,7 +97,7 @@ int RimGridCrossPlotCurve::groupIndex() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
size_t RimGridCrossPlotCurve::sampleCount() const size_t RimGridCrossPlotCurve::sampleCount() const
{ {
return m_qwtPlotCurve->dataSize(); return m_qwtPlotCurve ? m_qwtPlotCurve->dataSize() : 0;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -501,6 +501,14 @@ void RimGridCrossPlotCurveSet::onLoadDataAndUpdate(bool updateParentPlot)
void RimGridCrossPlotCurveSet::assignCurveDataGroups(const RigEclipseCrossPlotResult& result) void RimGridCrossPlotCurveSet::assignCurveDataGroups(const RigEclipseCrossPlotResult& result)
{ {
m_groupedResults.clear(); m_groupedResults.clear();
if (groupingEnabled() &&
(result.groupValuesContinuous.empty() && result.groupValuesDiscrete.empty()))
{
// Basis for group determination (i.e. formation list) may have been deleted since the grouping was assigned.
m_grouping = NO_GROUPING;
}
if (!groupingEnabled()) if (!groupingEnabled())
{ {
m_groupedResults[0] = result; m_groupedResults[0] = result;
@@ -647,7 +655,7 @@ size_t RimGridCrossPlotCurveSet::visibleCurveCount() const
size_t visibleCurves = 0; size_t visibleCurves = 0;
for (auto curve : m_crossPlotCurves) for (auto curve : m_crossPlotCurves)
{ {
if (curve->isCurveVisible()) visibleCurves++; if (curve && curve->isCurveVisible()) visibleCurves++;
} }
return visibleCurves; return visibleCurves;
} }
@@ -660,7 +668,7 @@ size_t RimGridCrossPlotCurveSet::sampleCount() const
size_t sampleCount = 0; size_t sampleCount = 0;
for (auto curve : m_crossPlotCurves) for (auto curve : m_crossPlotCurves)
{ {
if (curve->isCurveVisible()) sampleCount += curve->sampleCount(); if (curve && curve->isCurveVisible()) sampleCount += curve->sampleCount();
} }
return sampleCount; return sampleCount;
} }