diff options
authorRich Felker <>2017-03-21 12:13:59 -0400
committerRich Felker <>2017-03-21 12:19:47 -0400
commite6917eced2cc841fe3dfd9c04deec9202f9e34f3 (patch)
parente4fc9ad780e36c84e1ed6b0fc01b3c53ae65ff9d (diff)
increase limit on locale name length from 15 to 23 bytes
the old limit was one byte too short to support locale names of the form xx_XX.UTF-8@modifier where modifier is more than 3 bytes, a form which various real-world locale names take. the problem could be avoided by omitting the useless ".UTF-8" part, but users may need to have it present when operating on mixed-libc systems or when it will be carried over (e.g. across ssh) to other systems. the new limit is chosen sufficient for existing/reasonable locale names while still keeping the size of setlocale's static buffer small. also add locale_impl.h to the Makefile's list of headers which force rebuild of source files, to prevent dangerously inconsistent object files from getting used after this change.
2 files changed, 2 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 8246b78f..d2e89979 100644
--- a/Makefile
+++ b/Makefile
@@ -35,7 +35,7 @@ AOBJS = $(LIBC_OBJS)
LOBJS = $(LIBC_OBJS:.o=.lo)
GENH = obj/include/bits/alltypes.h obj/include/bits/syscall.h
GENH_INT = obj/src/internal/version.h
-IMPH = $(addprefix $(srcdir)/, src/internal/stdio_impl.h src/internal/pthread_impl.h src/internal/libc.h)
+IMPH = $(addprefix $(srcdir)/, src/internal/stdio_impl.h src/internal/pthread_impl.h src/internal/locale_impl.h src/internal/libc.h)
diff --git a/src/internal/locale_impl.h b/src/internal/locale_impl.h
index f5e4d9b4..d5a3cc94 100644
--- a/src/internal/locale_impl.h
+++ b/src/internal/locale_impl.h
@@ -6,7 +6,7 @@
#include "libc.h"
#include "pthread_impl.h"
-#define LOCALE_NAME_MAX 15
+#define LOCALE_NAME_MAX 23
struct __locale_map {
const void *map;