summary refs log tree commit diff
path: root/gnu/packages/patches/glibc-locale-incompatibility.patch
blob: baf30a79a71032827c861560a56a3e8f00f24354 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);