M gnu-system.am => gnu-system.am +1 -0
@@ 471,6 471,7 @@ dist_patch_DATA = \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-locales.patch \
+ gnu/packages/patches/glibc-locale-incompatibility.patch \
gnu/packages/patches/glibc-o-largefile.patch \
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
gnu/packages/patches/gnucash-price-quotes-perl.patch \
M gnu/packages/base.scm => gnu/packages/base.scm +1 -0
@@ 476,6 476,7 @@ store.")
(modules '((guix build utils)))
(patches (map search-patch
'("glibc-ldd-x86_64.patch"
+ "glibc-locale-incompatibility.patch"
"glibc-o-largefile.patch")))))
(build-system gnu-build-system)
A gnu/packages/patches/glibc-locale-incompatibility.patch => gnu/packages/patches/glibc-locale-incompatibility.patch +23 -0
@@ 0,0 1,23 @@
+This patch avoids an assertion failure when incompatible locale data
+is encountered:
+
+ https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html
+
+--- glibc-2.22/locale/loadlocale.c 2015-09-22 17:16:02.321981548 +0200
++++ glibc-2.22/locale/loadlocale.c 2015-09-22 17:17:34.814659064 +0200
+@@ -120,10 +120,11 @@
+ _nl_value_type_LC_XYZ array. There are all pointers. */
+ switch (category)
+ {
+-#define CATTEST(cat) \
+- case LC_##cat: \
+- assert (cnt < (sizeof (_nl_value_type_LC_##cat) \
+- / sizeof (_nl_value_type_LC_##cat[0]))); \
++#define CATTEST(cat) \
++ case LC_##cat: \
++ if (cnt >= (sizeof (_nl_value_type_LC_##cat) \
++ / sizeof (_nl_value_type_LC_##cat[0]))) \
++ goto puntdata; \
+ break
+ CATTEST (NUMERIC);
+ CATTEST (TIME);