Building coreutils configured with --enable-gcc-warnings and using
bleeding-edge gcc evoked a build failure due to the time_rz module.
The attached patch removes the warning/error-evoking test.

I also tested by running this:

./gnulib-tool --create-testdir --dir=/tmp/x --with-tests --test time_rz
From 0de3313d86751b8fc4616aad72cc9b6c707f1b3e Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email protected]>
Date: Sun, 18 Oct 2015 09:32:21 -0700
Subject: [PATCH] time_rz: avoid warning from bleeding-edge gcc's -Wnonnull

Compiling with gcc version 6.0.0 20151017 (experimental) (GCC), I
would see this:

lib/time_rz.c: In function 'localtime_rz':
lib/time_rz.c:292:15: error: nonnull argument 'tm' compared to NULL \
  [-Werror=nonnull]
           if (tm && !save_abbr (tz, tm))
               ^

That was complaining about "tm" because it is a parameter that was
declared with the __nonnull__ attribute.
* lib/time_rz.c (localtime_rz): Don't bother setting "tm" to the
result of localtime_r.
---
 ChangeLog     | 17 +++++++++++++++++
 lib/time_rz.c |  3 +--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 81f8cd2..fcfab70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2015-10-18  Jim Meyering  <[email protected]>
+
+	time_rz: avoid warning from bleeding-edge gcc's -Wnonnull
+	Compiling with gcc version 6.0.0 20151017 (experimental) (GCC), I
+	would see this:
+
+	lib/time_rz.c: In function 'localtime_rz':
+	lib/time_rz.c:292:15: error: nonnull argument 'tm' compared to NULL \
+	  [-Werror=nonnull]
+	           if (tm && !save_abbr (tz, tm))
+	               ^
+
+	That was complaining about "tm" because it is a parameter that was
+	declared with the __nonnull__ attribute.
+	* lib/time_rz.c (localtime_rz): Don't bother setting "tm" to the
+	result of localtime_r.
+
 2015-10-17  Jim Meyering  <[email protected]>

 	maint.mk: _gl_TS_function_match: fix "extern" name extracting regexp
diff --git a/lib/time_rz.c b/lib/time_rz.c
index 5e9636f..396cdd2 100644
--- a/lib/time_rz.c
+++ b/lib/time_rz.c
@@ -288,8 +288,7 @@ localtime_rz (timezone_t tz, time_t const *t, struct tm *tm)
       timezone_t old_tz = set_tz (tz);
       if (old_tz)
         {
-          tm = localtime_r (t, tm);
-          if (tm && !save_abbr (tz, tm))
+          if (localtime_r (t, tm) && !save_abbr (tz, tm))
             tm = NULL;
           if (revert_tz (old_tz))
             return tm;
-- 
2.6.0

Reply via email to