[libcamera-devel] [PATCH] libcamera: yaml_parser: Return nullopt on error

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Wed Aug 3 13:10:41 CEST 2022


On Wed, Aug 03, 2022 at 01:03:24PM +0200, Jacopo Mondi via libcamera-devel wrote:
> The YamlParser::getList<>() function returns an std::optional<> to allow
> callers to identify cases where parsing the .yaml file failed from cases
> where the parsed list is just empty.
> 
> The current implementation however returns an empty list in case of
> errors, making it impossible for the caller to detect parsing failures.
> 
> Fix this by returning std::nullopt in case of errors.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/libcamera/yaml_parser.cpp | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp
> index 84cb57d6de83..c96e99e1317c 100644
> --- a/src/libcamera/yaml_parser.cpp
> +++ b/src/libcamera/yaml_parser.cpp
> @@ -319,7 +319,7 @@ template<typename T,
>  std::optional<std::vector<T>> YamlObject::getList() const
>  {
>  	if (type_ != Type::List)
> -		return {};
> +		return std::nullopt;
>  
>  	std::vector<T> values;
>  	values.reserve(list_.size());
> @@ -327,7 +327,7 @@ std::optional<std::vector<T>> YamlObject::getList() const
>  	for (const YamlObject &entry : asList()) {
>  		const auto value = entry.get<T>();
>  		if (!value)
> -			return {};
> +			return std::nullopt;
>  		values.emplace_back(*value);
>  	}
>  
> -- 
> 2.37.1
> 


More information about the libcamera-devel mailing list