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>
This commit is contained in:
parent
1590e9b2b8
commit
1a6c7477fd
1 changed files with 24 additions and 24 deletions
|
@ -121,24 +121,24 @@ template<>
|
||||||
std::optional<bool> YamlObject::get() const
|
std::optional<bool> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "true")
|
if (value_ == "true")
|
||||||
return true;
|
return true;
|
||||||
else if (value_ == "false")
|
else if (value_ == "false")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return {};
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
std::optional<int16_t> YamlObject::get() const
|
std::optional<int16_t> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "")
|
if (value_ == "")
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ std::optional<int16_t> YamlObject::get() const
|
||||||
if ('\0' != *end || errno == ERANGE ||
|
if ('\0' != *end || errno == ERANGE ||
|
||||||
value < std::numeric_limits<int16_t>::min() ||
|
value < std::numeric_limits<int16_t>::min() ||
|
||||||
value > std::numeric_limits<int16_t>::max())
|
value > std::numeric_limits<int16_t>::max())
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -157,10 +157,10 @@ template<>
|
||||||
std::optional<uint16_t> YamlObject::get() const
|
std::optional<uint16_t> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "")
|
if (value_ == "")
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* libyaml parses all scalar values as strings. When a string has
|
* 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");
|
std::size_t found = value_.find_first_not_of(" \t");
|
||||||
if (found != std::string::npos && value_[found] == '-')
|
if (found != std::string::npos && value_[found] == '-')
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ std::optional<uint16_t> YamlObject::get() const
|
||||||
if ('\0' != *end || errno == ERANGE ||
|
if ('\0' != *end || errno == ERANGE ||
|
||||||
value < std::numeric_limits<uint16_t>::min() ||
|
value < std::numeric_limits<uint16_t>::min() ||
|
||||||
value > std::numeric_limits<uint16_t>::max())
|
value > std::numeric_limits<uint16_t>::max())
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -190,10 +190,10 @@ template<>
|
||||||
std::optional<int32_t> YamlObject::get() const
|
std::optional<int32_t> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "")
|
if (value_ == "")
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ std::optional<int32_t> YamlObject::get() const
|
||||||
if ('\0' != *end || errno == ERANGE ||
|
if ('\0' != *end || errno == ERANGE ||
|
||||||
value < std::numeric_limits<int32_t>::min() ||
|
value < std::numeric_limits<int32_t>::min() ||
|
||||||
value > std::numeric_limits<int32_t>::max())
|
value > std::numeric_limits<int32_t>::max())
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -212,10 +212,10 @@ template<>
|
||||||
std::optional<uint32_t> YamlObject::get() const
|
std::optional<uint32_t> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "")
|
if (value_ == "")
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* libyaml parses all scalar values as strings. When a string has
|
* 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");
|
std::size_t found = value_.find_first_not_of(" \t");
|
||||||
if (found != std::string::npos && value_[found] == '-')
|
if (found != std::string::npos && value_[found] == '-')
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ std::optional<uint32_t> YamlObject::get() const
|
||||||
if ('\0' != *end || errno == ERANGE ||
|
if ('\0' != *end || errno == ERANGE ||
|
||||||
value < std::numeric_limits<uint32_t>::min() ||
|
value < std::numeric_limits<uint32_t>::min() ||
|
||||||
value > std::numeric_limits<uint32_t>::max())
|
value > std::numeric_limits<uint32_t>::max())
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -245,10 +245,10 @@ template<>
|
||||||
std::optional<double> YamlObject::get() const
|
std::optional<double> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (value_ == "")
|
if (value_ == "")
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ std::optional<double> YamlObject::get() const
|
||||||
double value = std::strtod(value_.c_str(), &end);
|
double value = std::strtod(value_.c_str(), &end);
|
||||||
|
|
||||||
if ('\0' != *end || errno == ERANGE)
|
if ('\0' != *end || errno == ERANGE)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ template<>
|
||||||
std::optional<std::string> YamlObject::get() const
|
std::optional<std::string> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::Value)
|
if (type_ != Type::Value)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return value_;
|
return value_;
|
||||||
}
|
}
|
||||||
|
@ -274,18 +274,18 @@ template<>
|
||||||
std::optional<Size> YamlObject::get() const
|
std::optional<Size> YamlObject::get() const
|
||||||
{
|
{
|
||||||
if (type_ != Type::List)
|
if (type_ != Type::List)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
if (list_.size() != 2)
|
if (list_.size() != 2)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
auto width = list_[0].value->get<uint32_t>();
|
auto width = list_[0].value->get<uint32_t>();
|
||||||
if (!width)
|
if (!width)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
auto height = list_[1].value->get<uint32_t>();
|
auto height = list_[1].value->get<uint32_t>();
|
||||||
if (!height)
|
if (!height)
|
||||||
return {};
|
return std::nullopt;
|
||||||
|
|
||||||
return Size(*width, *height);
|
return Size(*width, *height);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue