Fix ambiguous 'else' [-Wparentheses]

Message ID CAD57uCea2JRbkzKZOAR5HOE_7yD9GWrSRgW7ugr=rTnZGYqN-Q@mail.gmail.com
State New
Headers show

Commit Message

Yvan Roux April 15, 2016, 9:37 a.m.
Hi,

GCC trubnk fails to build glibc since revision r234949 which enhanced
-Wparentheses (to address
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70436).  This simple
patch fixes the ambiguity.  Tested with an x86_84 build configured
with  --disable-werror and no warning emitted.

Thanks,
Yvan

2016-04-15  Yvan Roux  <yvan.roux@linaro.org>

        * stdlib/setenv.c (unsetenv): Fix ambiguous 'else'.
        * nis/nis_call.c (nis_server_cache_add): Likewise.

Comments

Yvan Roux April 15, 2016, 10:40 a.m. | #1
Hi Florian

On 15 April 2016 at 12:15, Florian Weimer <fweimer@redhat.com> wrote:
> On 04/15/2016 11:37 AM, Yvan Roux wrote:

>>

>> 2016-04-15  Yvan Roux<yvan.roux@linaro.org>

>>

>>          * stdlib/setenv.c (unsetenv): Fix ambiguous 'else'.

>>          * nis/nis_call.c (nis_server_cache_add): Likewise.

>

>

> Looks good to me (apart from the missing two spaces before the email

> address).  Can you commit this yourself?


Arrgh sorry copy/paste issue !

nope, I don't have the commit bit for glibc.

Cheers,
Yvan

Patch

diff --git a/nis/nis_call.c b/nis/nis_call.c
index 3fa37e4..cb7839a 100644
--- a/nis/nis_call.c
+++ b/nis/nis_call.c
@@ -680,16 +680,18 @@  nis_server_cache_add (const_nis_name name, int search_parent,
   /* Choose which entry should be evicted from the cache.  */
   loc = &nis_server_cache[0];
   if (*loc != NULL)
-    for (i = 1; i < 16; ++i)
-      if (nis_server_cache[i] == NULL)
-	{
+    {
+      for (i = 1; i < 16; ++i)
+	if (nis_server_cache[i] == NULL)
+	  {
+	    loc = &nis_server_cache[i];
+	    break;
+	  }
+	else if ((*loc)->uses > nis_server_cache[i]->uses
+		 || ((*loc)->uses == nis_server_cache[i]->uses
+		     && (*loc)->expires > nis_server_cache[i]->expires))
 	  loc = &nis_server_cache[i];
-	  break;
-	}
-      else if ((*loc)->uses > nis_server_cache[i]->uses
-	       || ((*loc)->uses == nis_server_cache[i]->uses
-		   && (*loc)->expires > nis_server_cache[i]->expires))
-	loc = &nis_server_cache[i];
+    }
   old = *loc;
   *loc = new;
 
diff --git a/stdlib/setenv.c b/stdlib/setenv.c
index da61ee0..e66045f 100644
--- a/stdlib/setenv.c
+++ b/stdlib/setenv.c
@@ -278,18 +278,20 @@  unsetenv (const char *name)
   ep = __environ;
   if (ep != NULL)
     while (*ep != NULL)
-      if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
-	{
-	  /* Found it.  Remove this pointer by moving later ones back.  */
-	  char **dp = ep;
-
-	  do
-	    dp[0] = dp[1];
-	  while (*dp++);
-	  /* Continue the loop in case NAME appears again.  */
-	}
-      else
-	++ep;
+      {
+	if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+	  {
+	    /* Found it.  Remove this pointer by moving later ones back.  */
+	    char **dp = ep;
+
+	    do
+		dp[0] = dp[1];
+	    while (*dp++);
+	    /* Continue the loop in case NAME appears again.  */
+	  }
+	else
+	  ++ep;
+      }
 
   UNLOCK;