From patchwork Tue Apr 13 00:27:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 11895 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id CA805BD1F6 for ; Tue, 13 Apr 2021 00:28:28 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 89A0268804; Tue, 13 Apr 2021 02:28:27 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Neb6EcGd"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 564C9605AE for ; Tue, 13 Apr 2021 02:28:25 +0200 (CEST) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EB2116F2 for ; Tue, 13 Apr 2021 02:28:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1618273705; bh=stdg1CduJtJEBdrUMvTKd0z7XLLVFtmpyjDtsdydaXI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Neb6EcGdjMUNGH/9tU/ftUcNITlB3BprlltNGr9eL2fsZWgDt9EP9ivUMaj/5g2kl +tJMpB/ntrVkX6XyM6scIj9Z4jz8+GqmlByvATP3a6fSUTKv242KWJvsZ4Qf1LIX5M Mgw+2rfZJmjUXnyaJhz/409+/VE7Q6joky8/teAY= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Tue, 13 Apr 2021 03:27:31 +0300 Message-Id: <20210413002731.25653-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.28.1 In-Reply-To: <20210413002731.25653-1-laurent.pinchart@ideasonboard.com> References: <20210413002731.25653-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/2] libcamera: span: Fix reverse iterators X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" std::reverse_iterator is constructed from an instance of iterator, and automatically subtract 1 when dereferencing. rbegin() and rend() should thus be constructed from end() and begin() respectively. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- 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(); }