glib: Fix bundled build with GCC 6

Backport two patches from upstream glib to handle -Wformat-nonliteral
included by default with GCC 6. Ideally the snapshot should be updated,
but this fix the issue until that happens.

https://bugs.freedesktop.org/show_bug.cgi?id=95326
This commit is contained in:
Dan Nicholson 2017-03-20 06:01:57 -05:00
parent 325ddf2f4b
commit 64cbed9884
4 changed files with 86 additions and 0 deletions

View file

@ -0,0 +1,29 @@
From 0817af40e8c74c721c30f6ef482b1f53d12044c7 Mon Sep 17 00:00:00 2001
From: coypu <coypu@sdf.org>
Date: Mon, 8 Feb 2016 00:06:06 +0200
Subject: gdate: Suppress string format literal warning
Newer versions of GCC emit an error here, but we know it's safe.
https://bugzilla.gnome.org/761550
---
glib/gdate.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/glib/gdate.c b/glib/gdate.c
index 4aece02..cdc735c 100644
--- a/glib/gdate.c
+++ b/glib/gdate.c
@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s,
* recognize whether strftime actually failed or just returned "".
*/
tmpbuf[0] = '\1';
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wformat-nonliteral"
tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
+ #pragma GCC diagnostic pop
if (tmplen == 0 && tmpbuf[0] != '\0')
{
--
cgit v0.12

View file

@ -0,0 +1,47 @@
From 8cdbc7fb2c8c876902e457abe46ee18a0b134486 Mon Sep 17 00:00:00 2001
From: coypu <coypu@sdf.org>
Date: Wed, 2 Mar 2016 19:38:48 +0200
Subject: gdate: Move warning pragma outside of function
Commit 0817af40e8c74c721c30f6ef482b1f53d12044c7 breaks the build on
older versions of GCC, which don't allow pragma inside functions.
https://bugzilla.gnome.org/761550
---
glib/gdate.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/glib/gdate.c b/glib/gdate.c
index cdc735c..92c34d2 100644
--- a/glib/gdate.c
+++ b/glib/gdate.c
@@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate *d,
*
* Returns: number of characters written to the buffer, or 0 the buffer was too small
*/
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
gsize
g_date_strftime (gchar *s,
gsize slen,
@@ -2494,10 +2497,7 @@ g_date_strftime (gchar *s,
* recognize whether strftime actually failed or just returned "".
*/
tmpbuf[0] = '\1';
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wformat-nonliteral"
tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
- #pragma GCC diagnostic pop
if (tmplen == 0 && tmpbuf[0] != '\0')
{
@@ -2552,3 +2552,5 @@ g_date_strftime (gchar *s,
return retval;
#endif
}
+
+#pragma GCC diagnostic pop
--
cgit v0.12

View file

@ -1,3 +1,4 @@
# pkg-config specific
glib-only.patch
no-installed-files.patch
foreign-automake.patch
@ -8,3 +9,7 @@ cross-compiling.patch
static-only.patch
win32-static-init.patch
osx-static-framework.patch
# Upstream backports
gcc-format-nonliteral-1.patch
gcc-format-nonliteral-2.patch

View file

@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate *d,
*
* Returns: number of characters written to the buffer, or 0 the buffer was too small
*/
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
gsize
g_date_strftime (gchar *s,
gsize slen,
@ -2549,3 +2552,5 @@ g_date_strftime (gchar *s,
return retval;
#endif
}
#pragma GCC diagnostic pop