diff --git a/srcpkgs/glib/patches/fix-formatd.patch b/srcpkgs/glib/patches/fix-formatd.patch new file mode 100644 index 00000000000..2249ff5a450 --- /dev/null +++ b/srcpkgs/glib/patches/fix-formatd.patch @@ -0,0 +1,86 @@ +From: =?UTF-8?q?=C3=89rico=20Nogueira?= +[PATCH] gstrfuncs: don't require nonstandard functions for USE_XLOCALE. + +Make it so USE_XLOCALE is set whenever newlocale() and uselocale() are +available. This way, we can still use the _g_snprintf() path for some +functions, and also use the *_l functions when they are available. + +newlocale(3) are uselocale(3) part of POSIX 2008, while the *_l +functions being used are nonstandard glibc extensions. Gating all the +locale functionality behind them meant we were using fallbacks on non +glibc platforms unnecessarily. + +Further changes to this code could add fallback for the non _l suffixed +number parsing functions, but that might be unnecessary complexity. + +Fixes #2553 +--- + glib/gstrfuncs.c | 17 +++++++---------- + 1 file changed, 7 insertions(+), 10 deletions(-) + +diff --git a/glib/gstrfuncs.c b/glib/gstrfuncs.c +index ea710c7a1..e486251ab 100644 +--- a/glib/gstrfuncs.c ++++ b/glib/gstrfuncs.c +@@ -317,11 +317,8 @@ static const guint16 ascii_table_data[256] = { + + const guint16 * const g_ascii_table = ascii_table_data; + +-#if defined (HAVE_NEWLOCALE) && \ +- defined (HAVE_USELOCALE) && \ +- defined (HAVE_STRTOD_L) && \ +- defined (HAVE_STRTOULL_L) && \ +- defined (HAVE_STRTOLL_L) ++#if defined(HAVE_NEWLOCALE) && \ ++ defined(HAVE_USELOCALE) + #define USE_XLOCALE 1 + #endif + +@@ -731,7 +728,7 @@ gdouble + g_ascii_strtod (const gchar *nptr, + gchar **endptr) + { +-#ifdef USE_XLOCALE ++#if defined(USE_XLOCALE) && defined(HAVE_STRTOD_L) + + g_return_val_if_fail (nptr != NULL, 0); + +@@ -1044,7 +1041,7 @@ g_ascii_formatd (gchar *buffer, + #define TOUPPER(c) (ISLOWER (c) ? (c) - 'a' + 'A' : (c)) + #define TOLOWER(c) (ISUPPER (c) ? (c) - 'A' + 'a' : (c)) + +-#ifndef USE_XLOCALE ++#if !defined(USE_XLOCALE) || !defined(HAVE_STRTOULL_L) || !defined(HAVE_STRTOLL_L) + + static guint64 + g_parse_long_long (const gchar *nptr, +@@ -1169,7 +1166,7 @@ g_parse_long_long (const gchar *nptr, + } + return 0; + } +-#endif /* !USE_XLOCALE */ ++#endif /* !defined(USE_XLOCALE) || !defined(HAVE_STRTOULL_L) || !defined(HAVE_STRTOLL_L) */ + + /** + * g_ascii_strtoull: +@@ -1210,7 +1207,7 @@ g_ascii_strtoull (const gchar *nptr, + gchar **endptr, + guint base) + { +-#ifdef USE_XLOCALE ++#if defined(USE_XLOCALE) && defined(HAVE_STRTOULL_L) + return strtoull_l (nptr, endptr, base, get_C_locale ()); + #else + gboolean negative; +@@ -1257,7 +1254,7 @@ g_ascii_strtoll (const gchar *nptr, + gchar **endptr, + guint base) + { +-#ifdef USE_XLOCALE ++#if defined(USE_XLOCALE) && defined(HAVE_STRTOLL_L) + return strtoll_l (nptr, endptr, base, get_C_locale ()); + #else + gboolean negative; +-- +2.34.1 + diff --git a/srcpkgs/glib/template b/srcpkgs/glib/template index 34f6bc335ff..5ada1180977 100644 --- a/srcpkgs/glib/template +++ b/srcpkgs/glib/template @@ -1,7 +1,7 @@ # Template file for 'glib' pkgname=glib version=2.70.0 -revision=2 +revision=3 build_style=meson # static version is necessary for qemu-user-static; # also disable LTO, otherwise there are multiple failures when linking qemu