On Thu, Mar 13, 2014 at 6:30 PM, Ian Lance Taylor <i...@google.com> wrote:
> On Thu, Mar 13, 2014 at 3:36 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>
>> Attached patch changes the return value of the bzero macro to void, as
>> defined in a 4.3BSD:
>>
>>        void bzero(void *s, size_t n);
>>
>> As an additional benefit, the changed macro now generates warning when
>> its return value is used (which is *not* the case in regex.c):
>
> I'm not worried about anybody using the return value incorrectly in
> this file.  I think we should just
>
> #      define bzero(s, n)       memset (s, '\0', n)
>
> I'll approve that change if it works.

Attached patch compiles without warnings as well. However, in some
case, we have similar situation with unused return value of

#     define memcpy(d, s, n)    (bcopy (s, d, n), (d))

so, I put (void) casts to memcpy call to avoid eventual "right-hand
operand of comma expression has no effect" warnings there.

2014-03-13  Uros Bizjak  <ubiz...@gmail.com>

    * regex.c (bzero) [!_LIBC]: Define without coma expression.
    (regerror): Cast the call to memcpy to (void) to avoid unused
    value warnings.

Is this version acceptable for mainline?

Uros.
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 208550)
+++ ChangeLog   (working copy)
@@ -1,3 +1,9 @@
+2014-03-13  Uros Bizjak  <ubiz...@gmail.com>
+
+       * regex.c (bzero) [!_LIBC]: Define without coma expression.
+       (regerror): Cast the call to memcpy to (void) to avoid unused
+       value warnings.
+
 2014-01-28  Thomas Schwinge  <tho...@codesourcery.com>
 
        * cp-demangle.c (d_demangle_callback): Put an abort call in place,
Index: regex.c
===================================================================
--- regex.c     (revision 208550)
+++ regex.c     (working copy)
@@ -151,7 +151,7 @@ char *realloc ();
 #    include <string.h>
 #    ifndef bzero
 #     ifndef _LIBC
-#      define bzero(s, n)      (memset (s, '\0', n), (s))
+#      define bzero(s, n)      memset (s, '\0', n)
 #     else
 #      define bzero(s, n)      __bzero (s, n)
 #     endif
@@ -8093,12 +8093,12 @@ regerror (int errcode, const regex_t *preg ATTRIBU
 #if defined HAVE_MEMPCPY || defined _LIBC
          *((char *) mempcpy (errbuf, msg, errbuf_size - 1)) = '\0';
 #else
-          memcpy (errbuf, msg, errbuf_size - 1);
+          (void) memcpy (errbuf, msg, errbuf_size - 1);
           errbuf[errbuf_size - 1] = 0;
 #endif
         }
       else
-        memcpy (errbuf, msg, msg_size);
+        (void) memcpy (errbuf, msg, msg_size);
     }
 
   return msg_size;

Reply via email to