From 12665192ae79e10b623bf9bff5e76f084fb6747f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 14 Jan 2019 15:30:44 +0100 Subject: [PATCH] [libcalamaresui] Defend against missing config settings --- src/libcalamaresui/Branding.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 08deb7263..15c1c6125 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -305,6 +305,16 @@ Branding::WindowDimension::isValid() const return ( unit() != none ) && ( value() > 0 ); } + +/// @brief Guard against cases where the @p key doesn't exist in @p doc +static inline QString +getString( const YAML::Node& doc, const char* key ) +{ + if ( doc[key] ) + return QString::fromStdString( doc[key].as< std::string >() ); + return QString(); +} + void Branding::initSimpleSettings( const YAML::Node& doc ) { @@ -322,11 +332,11 @@ Branding::initSimpleSettings( const YAML::Node& doc ) m_welcomeStyleCalamares = doc[ "welcomeStyleCalamares" ].as< bool >( false ); m_welcomeExpandingLogo = doc[ "welcomeExpandingLogo" ].as< bool >( true ); - m_windowExpansion = expansionNames.find( QString::fromStdString( doc[ "windowExpanding" ].as< std::string >() ), ok ); + m_windowExpansion = expansionNames.find( getString( doc, "windowExpanding" ), ok ); if ( !ok ) cWarning() << "Branding module-setting *windowExpanding* interpreted as" << expansionNames.find( m_windowExpansion, ok ); - QString windowSize = QString::fromStdString( doc[ "windowSize" ].as< std::string >() ); + QString windowSize = getString( doc, "windowSize" ); if ( !windowSize.isEmpty() ) { auto l = windowSize.split( ',' );