From 07ab821646c140dd547278b0ac479a49e50dd729 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 13 Sep 2019 13:17:07 +0200 Subject: [PATCH] #4716 Summary Case : Guard access to contained summary reader --- .../RicExportFractureCompletionsImpl.cpp | 2 +- .../RicSummaryPlotFeatureImpl.cpp | 5 ++++- .../Summary/RimSummaryCaseCollection.cpp | 2 +- .../Summary/RimSummaryCurve.cpp | 21 +++++++++++-------- .../Summary/RimSummaryPlotSourceStepping.cpp | 6 +++--- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp b/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp index 269eec1081..3c329ad7fb 100644 --- a/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp +++ b/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp @@ -427,7 +427,7 @@ void RicExportFractureCompletionsImpl::getWellPressuresAndInitialProductionTimeS { RimSummaryCase* summaryCase = mainCollection->findSummaryCaseFromEclipseResultCase(resultCase); - if (summaryCase) + if (summaryCase && summaryCase->summaryReader()) { std::vector values; if (summaryCase->summaryReader()->values(wbhpPressureAddress, &values)) diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp index 11811f7424..89b490fa0f 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp @@ -37,7 +37,7 @@ //-------------------------------------------------------------------------------------------------- RimSummaryCurve* RicSummaryPlotFeatureImpl::addDefaultCurveToPlot(RimSummaryPlot* plot, RimSummaryCase* summaryCase) { - if (plot) + if (plot && summaryCase && summaryCase->summaryReader()) { RifEclipseSummaryAddress defaultAddressToUse; @@ -88,6 +88,9 @@ std::vector RicSummaryPlotFeatureImpl::addDefaultCurvesToPlot( { std::vector defaultCurves; + if (!plot) return defaultCurves; + if (!summaryCase || !summaryCase->summaryReader()) return defaultCurves; + QString curvesTextFilter = RiaApplication::instance()->preferences()->defaultSummaryCurvesTextFilter; QStringList curveFilters = curvesTextFilter.split(";", QString::SkipEmptyParts); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp index 95396885f6..280b34555f 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp @@ -276,7 +276,7 @@ std::set RimSummaryCaseCollection::ensembleSummaryAddr } } - if (maxAddrIndex >= 0) + if (maxAddrIndex >= 0 && m_cases[maxAddrIndex]->summaryReader()) { const std::set& addrs = m_cases[maxAddrIndex]->summaryReader()->allResultAddresses(); addresses.insert(addrs.begin(), addrs.end()); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp index 9ae2c362b2..521de1c23e 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp @@ -515,16 +515,19 @@ void RimSummaryCurve::onLoadDataAndUpdate(bool updateParentPlot) if (plot->timeAxisProperties()->timeMode() == RimSummaryTimeAxisProperties::DATE) { auto reader = summaryCaseY()->summaryReader(); - auto errAddress = reader->errorAddress(summaryAddressY()); - if (errAddress.isValid()) + if (reader) { - std::vector errValues; - reader->values(errAddress, &errValues); - m_qwtPlotCurve->setSamplesFromTimeTAndYValues(curveTimeStepsY, curveValuesY, errValues, isLogCurve); - } - else - { - m_qwtPlotCurve->setSamplesFromTimeTAndYValues(curveTimeStepsY, curveValuesY, isLogCurve); + auto errAddress = reader->errorAddress(summaryAddressY()); + if (errAddress.isValid()) + { + std::vector errValues; + reader->values(errAddress, &errValues); + m_qwtPlotCurve->setSamplesFromTimeTAndYValues(curveTimeStepsY, curveValuesY, errValues, isLogCurve); + } + else + { + m_qwtPlotCurve->setSamplesFromTimeTAndYValues(curveTimeStepsY, curveValuesY, isLogCurve); + } } } else diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotSourceStepping.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotSourceStepping.cpp index 402f93bbf0..46be431e15 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotSourceStepping.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotSourceStepping.cpp @@ -581,12 +581,12 @@ std::vector RimSummaryPlotSourceStepping::summaryRea { for (auto curve : curveCollection->curves()) { - if (isYAxisStepping() && curve->summaryCaseY()) + if (isYAxisStepping() && curve->summaryCaseY() && curve->summaryCaseY()->summaryReader()) { readers.push_back(curve->summaryCaseY()->summaryReader()); } - if (isXAxisStepping() && curve->summaryCaseX()) + if (isXAxisStepping() && curve->summaryCaseX() && curve->summaryCaseX()->summaryReader()) { readers.push_back(curve->summaryCaseX()->summaryReader()); } @@ -602,7 +602,7 @@ std::vector RimSummaryPlotSourceStepping::summaryRea { for (auto curve : curveSet->curves()) { - if (isYAxisStepping() && curve->summaryCaseY()) + if (isYAxisStepping() && curve->summaryCaseY() && curve->summaryCaseY()->summaryReader()) { readers.push_back(curve->summaryCaseY()->summaryReader()); }