[libcamera-devel] [PATCH v2] libcamera: event_dispatcher_poll: Remove struct keyword from for-range

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Jun 25 22:30:59 CEST 2019


Hi Kieran,

Thank you for the patch.

On Tue, Jun 25, 2019 at 09:27:13PM +0100, Kieran Bingham wrote:
> When using -std=c++11, GCC versions 6.2 and 6.3 take objection to
> declaring a struct type when using a range based iterator:
> 
>     event_dispatcher_poll.cpp:231:13: error: types may not be defined
> 	in a for-range-declaration [-Werror]
> 
> 		for (const struct pollfd &pfd : pollfds) {
> 		           ^~~~~~
> 
> 	cc1plus: all warnings being treated as errors
> 
> Removing the keyword 'struct' ensures that the compiler does not try to
> declare the type, and instead uses the type as already defined by the
> relevant poll.h header.
> 
> This issue does not affect later compiler versions, though earlier
> versions do complain about this keyword if the -std=c++11 option is not
> given.

No they don't, they complain that for range loops are a C++11 feature,
so it's not related. I would drop the second part of the sentence.

> Reported-by: [autobuild.buildroot.net] Thomas Petazzoni <thomas.petazzoni at bootlin.com>
>   http://autobuild.buildroot.net/results/f6dd4c60c04892c8b1669e6000fce7edb2b6349e/
> 
> Fixes: 8356f8a6ab87 ("libcamera: Add a poll-based event dispatcher")
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  src/libcamera/event_dispatcher_poll.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/event_dispatcher_poll.cpp b/src/libcamera/event_dispatcher_poll.cpp
> index 0ff99fce47ab..df9dffb2326c 100644
> --- a/src/libcamera/event_dispatcher_poll.cpp
> +++ b/src/libcamera/event_dispatcher_poll.cpp
> @@ -241,7 +241,7 @@ void EventDispatcherPoll::processNotifiers(const std::vector<struct pollfd> &pol
>  		{ EventNotifier::Exception, POLLPRI },
>  	};
>  
> -	for (const struct pollfd &pfd : pollfds) {
> +	for (const pollfd &pfd : pollfds) {
>  		auto iter = notifiers_.find(pfd.fd);
>  		ASSERT(iter != notifiers_.end());
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list