* gnu/packages/patches/glibc-locale-incompatibility.patch: New file. * gnu/packages/base.scm (glibc)[source]: Use it. * gnu-system.am (dist_patch_DATA): Add it.
		
			
				
	
	
		
			23 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
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);
 |