[libcamera-devel,v2,1/2] libcamera: process: Properly ignore unused result with gcc

Message ID 20190819170249.11177-1-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • [libcamera-devel,v2,1/2] libcamera: process: Properly ignore unused result with gcc
Related show

Commit Message

Laurent Pinchart Aug. 19, 2019, 5:02 p.m. UTC
Casting the return value of a function to (void) doesn't ignore the
unused result warning with gcc. Use a #pragma to fix this properly, to
fix compilation with _FORTIFY_SOURCE.

Fixes: df23ab95f3d7 ("libcamera: process: fix compilation on Chromium OS")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/process.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

Paul Elder Aug. 22, 2019, 3:42 a.m. UTC | #1
On Mon, Aug 19, 2019 at 08:02:48PM +0300, Laurent Pinchart wrote:
> Casting the return value of a function to (void) doesn't ignore the
> unused result warning with gcc. Use a #pragma to fix this properly, to
> fix compilation with _FORTIFY_SOURCE.
> 
> Fixes: df23ab95f3d7 ("libcamera: process: fix compilation on Chromium OS")
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Looks good to me.

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

> ---
>  src/libcamera/process.cpp | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
> index ab716a9cd57f..3b4d0f10da67 100644
> --- a/src/libcamera/process.cpp
> +++ b/src/libcamera/process.cpp
> @@ -68,10 +68,15 @@ namespace {
>  
>  void sigact(int signal, siginfo_t *info, void *ucontext)
>  {
> +#pragma GCC diagnostic push
> +#pragma GCC diagnostic ignored "-Wunused-result"
> +	/*
> +	 * We're in a signal handler so we can't log any message, and we need
> +	 * to continue anyway.
> +	 */
>  	char data = 0;
> -	/* We're in a signal handler so we can't log any message,
> -	 * and we need to continue anyway. */
> -	(void)write(ProcessManager::instance()->writePipe(), &data, sizeof(data));
> +	write(ProcessManager::instance()->writePipe(), &data, sizeof(data));
> +#pragma GCC diagnostic pop
>  
>  	const struct sigaction &oldsa = ProcessManager::instance()->oldsa();
>  	if (oldsa.sa_flags & SA_SIGINFO) {
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
index ab716a9cd57f..3b4d0f10da67 100644
--- a/src/libcamera/process.cpp
+++ b/src/libcamera/process.cpp
@@ -68,10 +68,15 @@  namespace {
 
 void sigact(int signal, siginfo_t *info, void *ucontext)
 {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-result"
+	/*
+	 * We're in a signal handler so we can't log any message, and we need
+	 * to continue anyway.
+	 */
 	char data = 0;
-	/* We're in a signal handler so we can't log any message,
-	 * and we need to continue anyway. */
-	(void)write(ProcessManager::instance()->writePipe(), &data, sizeof(data));
+	write(ProcessManager::instance()->writePipe(), &data, sizeof(data));
+#pragma GCC diagnostic pop
 
 	const struct sigaction &oldsa = ProcessManager::instance()->oldsa();
 	if (oldsa.sa_flags & SA_SIGINFO) {