aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcamera
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-08-05 19:02:55 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-08-09 22:22:17 +0300
commit1a6c7477fda7c6cfbf3483c529aebf64d7ed6a8e (patch)
tree7bbeb5a67cb7ef2b3de97673280e12f645e948d1 /src/libcamera
parent1590e9b2b8c1b8b120a9b0dd6a53f4ef1298b2a0 (diff)
libcamera: yaml_parser: Return nullopt on error from YamlObject::get()
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: ‘<anonymous>’ 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 <Rauch.Christian@gmx.de> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/libcamera')
-rw-r--r--src/libcamera/yaml_parser.cpp48
1 files changed, 24 insertions, 24 deletions
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<bool> 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<int16_t> 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<int16_t> YamlObject::get() const
if ('\0' != *end || errno == ERANGE ||
value < std::numeric_limits<int16_t>::min() ||
value > std::numeric_limits<int16_t>::max())
- return {};
+ return std::nullopt;
return value;
}
@@ -157,10 +157,10 @@ template<>
std::optional<uint16_t> 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<uint16_t> 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<uint16_t> YamlObject::get() const
if ('\0' != *end || errno == ERANGE ||
value < std::numeric_limits<uint16_t>::min() ||
value > std::numeric_limits<uint16_t>::max())
- return {};
+ return std::nullopt;
return value;
}
@@ -190,10 +190,10 @@ template<>
std::optional<int32_t> 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<int32_t> YamlObject::get() const
if ('\0' != *end || errno == ERANGE ||
value < std::numeric_limits<int32_t>::min() ||
value > std::numeric_limits<int32_t>::max())
- return {};
+ return std::nullopt;
return value;
}
@@ -212,10 +212,10 @@ template<>
std::optional<uint32_t> 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<uint32_t> 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<uint32_t> YamlObject::get() const
if ('\0' != *end || errno == ERANGE ||
value < std::numeric_limits<uint32_t>::min() ||
value > std::numeric_limits<uint32_t>::max())
- return {};
+ return std::nullopt;
return value;
}
@@ -245,10 +245,10 @@ template<>
std::optional<double> 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<double> 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<std::string> YamlObject::get() const
{
if (type_ != Type::Value)
- return {};
+ return std::nullopt;
return value_;
}
@@ -274,18 +274,18 @@ template<>
std::optional<Size> 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<uint32_t>();
if (!width)
- return {};
+ return std::nullopt;
auto height = list_[1].value->get<uint32_t>();
if (!height)
- return {};
+ return std::nullopt;
return Size(*width, *height);
}

Privacy Policy