From 819cfe3c56733f1de97fd69cf782db968f1f68e7 Mon Sep 17 00:00:00 2001
From: =?utf8?q?P=C3=A1draig=20Brady?=
Date: Fri, 5 Dec 2014 12:32:49 +0000
Subject: [PATCH] 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.
---
ChangeLog | 8 ++++++++
lib/filevercmp.h | 2 +-
lib/posixtm.c | 9 +++++++++
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index fb6723b173..1c4a7ab899 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2014-12-05 Pádraig Brady
+
+ 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
Fix LDBL80_WORDS macro on big endian platforms.
diff --git a/lib/filevercmp.h b/lib/filevercmp.h
index 72785cd62f..ad359eb004 100644
--- a/lib/filevercmp.h
+++ b/lib/filevercmp.h
@@ -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 */
diff --git a/lib/posixtm.c b/lib/posixtm.c
index 2fe81ab6a0..30239320ae 100644
--- a/lib/posixtm.c
+++ b/lib/posixtm.c
@@ -27,6 +27,13 @@
#include
#include
+/* 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))
--
2.39.5