From 1a6c7477fda7c6cfbf3483c529aebf64d7ed6a8e Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Fri, 5 Aug 2022 19:02:55 +0300 Subject: libcamera: yaml_parser: Return nullopt on error from YamlObject::get() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The YamlParser::get<>() function returns an std::optional<> to indicate when YAML parsing failed. The current implementation returns a default constructed std::optional in case of errors with return {}; This has been reported as generating compiler warnings with a gcc 9.3.0 arm64 cross-compiler: ../src/libcamera/yaml_parser.cpp:184:11: error: ‘’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 184 | return {}; | ^ Replace this with an explicit return std::nullopt; which fixes the warnings and conveys the purpose more explicitly. Reported-by: Christian Rauch Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi --- src/libcamera/yaml_parser.cpp | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp index c96e99e1..9162e225 100644 --- a/src/libcamera/yaml_parser.cpp +++ b/src/libcamera/yaml_parser.cpp @@ -121,24 +121,24 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "true") return true; else if (value_ == "false") return false; - return {}; + return std::nullopt; } template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "") - return {}; + return std::nullopt; char *end; @@ -148,7 +148,7 @@ std::optional YamlObject::get() const if ('\0' != *end || errno == ERANGE || value < std::numeric_limits::min() || value > std::numeric_limits::max()) - return {}; + return std::nullopt; return value; } @@ -157,10 +157,10 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "") - return {}; + return std::nullopt; /* * libyaml parses all scalar values as strings. When a string has @@ -171,7 +171,7 @@ std::optional YamlObject::get() const */ std::size_t found = value_.find_first_not_of(" \t"); if (found != std::string::npos && value_[found] == '-') - return {}; + return std::nullopt; char *end; @@ -181,7 +181,7 @@ std::optional YamlObject::get() const if ('\0' != *end || errno == ERANGE || value < std::numeric_limits::min() || value > std::numeric_limits::max()) - return {}; + return std::nullopt; return value; } @@ -190,10 +190,10 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "") - return {}; + return std::nullopt; char *end; @@ -203,7 +203,7 @@ std::optional YamlObject::get() const if ('\0' != *end || errno == ERANGE || value < std::numeric_limits::min() || value > std::numeric_limits::max()) - return {}; + return std::nullopt; return value; } @@ -212,10 +212,10 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "") - return {}; + return std::nullopt; /* * libyaml parses all scalar values as strings. When a string has @@ -226,7 +226,7 @@ std::optional YamlObject::get() const */ std::size_t found = value_.find_first_not_of(" \t"); if (found != std::string::npos && value_[found] == '-') - return {}; + return std::nullopt; char *end; @@ -236,7 +236,7 @@ std::optional YamlObject::get() const if ('\0' != *end || errno == ERANGE || value < std::numeric_limits::min() || value > std::numeric_limits::max()) - return {}; + return std::nullopt; return value; } @@ -245,10 +245,10 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; if (value_ == "") - return {}; + return std::nullopt; char *end; @@ -256,7 +256,7 @@ std::optional YamlObject::get() const double value = std::strtod(value_.c_str(), &end); if ('\0' != *end || errno == ERANGE) - return {}; + return std::nullopt; return value; } @@ -265,7 +265,7 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::Value) - return {}; + return std::nullopt; return value_; } @@ -274,18 +274,18 @@ template<> std::optional YamlObject::get() const { if (type_ != Type::List) - return {}; + return std::nullopt; if (list_.size() != 2) - return {}; + return std::nullopt; auto width = list_[0].value->get(); if (!width) - return {}; + return std::nullopt; auto height = list_[1].value->get(); if (!height) - return {}; + return std::nullopt; return Size(*width, *height); } -- cgit v1.2.1