[libcamera-devel] [PATCH 2/2] libcamera: span: Fix reverse iterators

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Apr 13 22:55:11 CEST 2021


Hi Laurent,

On 13/04/2021 01:27, Laurent Pinchart wrote:
> std::reverse_iterator<iterator> is constructed from an instance of
> iterator, and automatically subtract 1 when dereferencing. rbegin() and

s/subtract/subtracts/

> rend() should thus be constructed from end() and begin() respectively.
> 

I guess this is why the previous patch talks about testing rend() and
crend().

But this one sounds ok to me.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  include/libcamera/span.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/include/libcamera/span.h b/include/libcamera/span.h
> index 91e9f974cc58..7a35806b1710 100644
> --- a/include/libcamera/span.h
> +++ b/include/libcamera/span.h
> @@ -194,9 +194,9 @@ public:
>  	constexpr const_iterator cbegin() const { return begin(); }
>  	constexpr iterator end() const { return data() + size(); }
>  	constexpr const_iterator cend() const { return end(); }
> -	constexpr reverse_iterator rbegin() const { return reverse_iterator(data() + size() - 1); }
> +	constexpr reverse_iterator rbegin() const { return reverse_iterator(end()); }
>  	constexpr const_reverse_iterator crbegin() const { return rbegin(); }
> -	constexpr reverse_iterator rend() const { return reverse_iterator(data() - 1); }
> +	constexpr reverse_iterator rend() const { return reverse_iterator(begin()); }
>  	constexpr const_reverse_iterator crend() const { return rend(); }
>  
>  	constexpr reference front() const { return *data(); }
> @@ -360,9 +360,9 @@ public:
>  	constexpr const_iterator cbegin() const { return begin(); }
>  	constexpr iterator end() const { return data() + size(); }
>  	constexpr const_iterator cend() const { return end(); }
> -	constexpr reverse_iterator rbegin() const { return reverse_iterator(data() + size() - 1); }
> +	constexpr reverse_iterator rbegin() const { return reverse_iterator(end()); }
>  	constexpr const_reverse_iterator crbegin() const { return rbegin(); }
> -	constexpr reverse_iterator rend() const { return reverse_iterator(data() - 1); }
> +	constexpr reverse_iterator rend() const { return reverse_iterator(begin()); }
>  	constexpr const_reverse_iterator crend() const { return rend(); }
>  
>  	constexpr reference front() const { return *data(); }
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list