I've just pushed the following patch. It's needed by grep, to accommodate changes I'm about to push there.
It adds a test to gl_REGEX that ensures that re_compiler_pattern diagnoses [b-a] as invalid when using RE_SYNTAX_POSIX_EGREP. The net result is no change on x86_64, since on such systems, the included regex code was already required due to a later test. However, on [3-6]86-based systems, this macro used to allow the containing application to use a glibc-provided regex, but with this change, it will always require the gnulib-supplied one. I'll file a glibc bug shortly. >From 18f8ae4bbed4d919e564fe54b94feb6bce2c4c8f Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Tue, 19 Jan 2010 08:25:12 +0100 Subject: [PATCH] ensure that the regexp [b-a] is diagnosed as invalid * m4/regex.m4 (gl_REGEX): Ensure that re_compiler_pattern diagnoses [b-a] as invalid when using RE_SYNTAX_POSIX_EGREP. Currently, glibc-2.11.90-10 fails to do that. --- m4/regex.m4 | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/m4/regex.m4 b/m4/regex.m4 index a702252..6bd6b8f 100644 --- a/m4/regex.m4 +++ b/m4/regex.m4 @@ -94,10 +94,17 @@ AC_DEFUN([gl_REGEX], s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, ®ex); /* This should fail with _Invalid character class name_ error. */ if (!s) return 1; + /* Ensure that [b-a] is diagnosed as invalid. */ + re_set_syntax (RE_SYNTAX_POSIX_EGREP); + memset (®ex, 0, sizeof regex); + s = re_compile_pattern ("a[b-a]", 6, ®ex); + if (s == 0) + return 1; + /* This should succeed, but does not for glibc-2.1.3. */ memset (®ex, 0, sizeof regex); s = re_compile_pattern ("{1", 2, ®ex); if (s) -- 1.7.0.rc1.193.ge8618