]> Savannah Git Hosting - gnulib.git/commitdiff
filevercmp, posixtm: avoid compiler warnings with -O3
authorPádraig Brady <P@draigBrady.com>
Fri, 5 Dec 2014 12:32:49 +0000 (12:32 +0000)
committerPádraig Brady <P@draigBrady.com>
Fri, 5 Dec 2014 13:22:42 +0000 (13:22 +0000)
* lib/filevercmp.h (filevercmp): Tag with _GL_ATTRIBUTE_PURE
* lib/posixtm.c: (IF_LINT): Define.
(posix_time_parse): Use it to void a "may be used uninitialized"
warning, seen only with -O3.

ChangeLog
lib/filevercmp.h
lib/posixtm.c

index fb6723b1732f8e3c7e91dd92e6e191d13d20ffa8..1c4a7ab899e754d1895f88500afea2be0cd5783d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2014-12-05  Pádraig Brady  <P@draigBrady.com>
+
+       filevercmp, posixtm: avoid compiler warnings with -O3
+       * lib/filevercmp.h (filevercmp): Tag with _GL_ATTRIBUTE_PURE
+       * lib/posixtm.c: (IF_LINT): Define.
+       (posix_time_parse): Use it to void a "may be used uninitialized"
+       warning, seen only with -O3.
+
 2014-12-05  Bruno Haible  <bruno@clisp.org>
 
        Fix LDBL80_WORDS macro on big endian platforms.
index 72785cd62f6eedb19b2eaf2da0172c4136b87049..ad359eb004a6c657fb99567462931fdeac5a9fe9 100644 (file)
@@ -37,6 +37,6 @@
    PREFIX VER2 SUFFIX) < 0.
 
    This function is intended to be a replacement for strverscmp. */
-int filevercmp (const char *s1, const char *s2);
+int filevercmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE;
 
 #endif /* FILEVERCMP_H */
index 2fe81ab6a01c83af43c8685382db3521f744d310..30239320ae11006382aee5dc48be1816b03502e0 100644 (file)
 #include <sys/types.h>
 #include <string.h>
 
+/* Use this to suppress gcc's "...may be used uninitialized" warnings. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
 #if USE_UNLOCKED_IO
 # include "unlocked-io.h"
 #endif
@@ -118,6 +125,8 @@ posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits)
   if (len != 8 && len != 10 && len != 12)
     return 1;
 
+  IF_LINT(if (len < 8) return 1;)
+
   if (dot)
     {
       if (!(syntax_bits & PDS_SECONDS))