[glib: 3/4] Silence clang errors about -Wformat-nonliteral due to missing intermediate attributes
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 3/4] Silence clang errors about -Wformat-nonliteral due to missing intermediate attributes
- Date: Fri, 1 May 2020 16:58:19 +0000 (UTC)
commit 6cae01c2f53ce0162043efb69d93678e9c20d733
Author: Martin Storsjö <martin martin st>
Date: Sun Apr 5 00:06:37 2020 +0300
Silence clang errors about -Wformat-nonliteral due to missing intermediate attributes
By default, meson builds glib with -Werror=format=2, which
implies -Werror=format-nonliteral. With these flags, clang errors
out on e.g. the g_message_win32_error function, due to "format
string is not a string literal". This function takes a format
string, and passes the va_list of the arguments onwards to
g_strdup_vprintf, which is annotated with printf attributes.
When passing a string+va_list to another function, GCC doesn't warn
with -Wformat-nonliteral. Clang however does warn, unless the
functions themselves (g_message_win32_error and set_error) are decorated
with similar printf attributes (to force the same checks upon the
caller) - see
https://clang.llvm.org/docs/AttributeReference.html#format
for reference.
Adding these attributes revealed one existing mismatched format string
(fixed in the preceding commit).
gio/gregistrysettingsbackend.c | 2 +-
gmodule/gmodule-win32.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c
index 9f9d71857..b0e295a04 100644
--- a/gio/gregistrysettingsbackend.c
+++ b/gio/gregistrysettingsbackend.c
@@ -201,7 +201,7 @@ trace (const char *format,
* equivalent function for g_warning because none of the registry errors can
* result from programmer error (Microsoft programmers don't count), instead
* they will mostly occur from people messing with the registry by hand. */
-static void
+static void G_GNUC_PRINTF (2, 3)
g_message_win32_error (DWORD result_code,
const gchar *format,
...)
diff --git a/gmodule/gmodule-win32.c b/gmodule/gmodule-win32.c
index 5057d256e..fef4d893d 100644
--- a/gmodule/gmodule-win32.c
+++ b/gmodule/gmodule-win32.c
@@ -39,7 +39,7 @@
#include <sys/cygwin.h>
#endif
-static void
+static void G_GNUC_PRINTF (1, 2)
set_error (const gchar *format,
...)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]