Skip to content

Commit 6d8092c

Browse files
committed
#13885 OpmCommonSummary: Add try/catch around summary value and time step reads to fix crash
Co-Authored-By: Magne Sjaastad <magne.sjaastad@yahoo.no>
1 parent 01e0046 commit 6d8092c

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

ApplicationLibCode/FileInterface/RifOpmCommonSummary.cpp

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,24 @@ std::pair<bool, std::vector<double>> RifOpmCommonEclipseSummary::values( const R
200200
if ( !keyword.empty() )
201201
{
202202
std::vector<double> values;
203-
if ( m_enhancedReader && m_enhancedReader->hasKey( keyword ) )
203+
try
204204
{
205-
auto fileValues = m_enhancedReader->get( keyword );
206-
values.insert( values.begin(), fileValues.begin(), fileValues.end() );
205+
if ( m_enhancedReader && m_enhancedReader->hasKey( keyword ) )
206+
{
207+
auto fileValues = m_enhancedReader->get( keyword );
208+
values.insert( values.begin(), fileValues.begin(), fileValues.end() );
209+
}
210+
else if ( m_standardReader && m_standardReader->hasKey( keyword ) )
211+
{
212+
auto fileValues = m_standardReader->get( keyword );
213+
values.insert( values.begin(), fileValues.begin(), fileValues.end() );
214+
}
207215
}
208-
else if ( m_standardReader && m_standardReader->hasKey( keyword ) )
216+
catch ( const std::exception& e )
209217
{
210-
auto fileValues = m_standardReader->get( keyword );
211-
values.insert( values.begin(), fileValues.begin(), fileValues.end() );
218+
RiaLogging::warning(
219+
QString( "Summary reader failed to load keyword '%1': %2" ).arg( QString::fromStdString( keyword ) ).arg( e.what() ) );
220+
return { false, {} };
212221
}
213222
return { true, values };
214223
}
@@ -344,22 +353,29 @@ void RifOpmCommonEclipseSummary::populateTimeSteps()
344353
Opm::time_point startOfSimulation;
345354
std::vector<float> daysSinceStartOfSimulation;
346355

347-
if ( m_enhancedReader )
356+
try
348357
{
349-
startOfSimulation = m_enhancedReader->startdate();
358+
if ( m_enhancedReader )
359+
{
360+
startOfSimulation = m_enhancedReader->startdate();
350361

351-
if ( m_enhancedReader->numberOfTimeSteps() > 0 )
362+
if ( m_enhancedReader->numberOfTimeSteps() > 0 )
363+
{
364+
daysSinceStartOfSimulation = m_enhancedReader->get( "TIME" );
365+
}
366+
}
367+
else if ( m_standardReader )
352368
{
353-
daysSinceStartOfSimulation = m_enhancedReader->get( "TIME" );
369+
startOfSimulation = m_standardReader->startdate();
370+
if ( m_standardReader->numberOfTimeSteps() > 0 )
371+
{
372+
daysSinceStartOfSimulation = m_standardReader->get( "TIME" );
373+
}
354374
}
355375
}
356-
else if ( m_standardReader )
376+
catch ( const std::exception& e )
357377
{
358-
startOfSimulation = m_standardReader->startdate();
359-
if ( m_standardReader->numberOfTimeSteps() > 0 )
360-
{
361-
daysSinceStartOfSimulation = m_standardReader->get( "TIME" );
362-
}
378+
RiaLogging::warning( QString( "Summary reader failed to load time steps: %1" ).arg( e.what() ) );
363379
}
364380

365381
const auto startAsTimeT = std::chrono::system_clock::to_time_t( startOfSimulation );

0 commit comments

Comments
 (0)