On Fri, Nov 1, 2013 at 12:53 AM, Aharon Robbins <[email protected]> wrote:
> Hello All.
>
>> >>> After updating from 2.14 to 2.15 grep has started to fail to match
>> >>> patterns
>> >>> that contain '\s*' or '\s\+'
>>
>> And here's a proper patch, including NEWS and test suite additions:
>
> FWIW, I can't reproduce this in gawk (gawk-4.1-stable branch).
>
> The program below correctly produces no output, with and without the fix
> in dfa.c:lex. (I have added the fix anyway.)
>
> Any ideas why?
>
> Thanks,
>
> Arnold
> ----------------------------------
> BEGIN {
> pat["^\\s*$"] = pat["^\\s+$"] = pat["^\\s?$"] = pat["^\\s{1}$"] = 1
> for (i in pat) {
> if (" " !~ i) {
> printf("pattern \"%s\" failed!\n", i) > "/dev/stderr"
> exit 1
> }
> }
> exit 0
> }
Thanks for the report.
With that, I realized that my new grep test case was inadequate:
it did not force the use of a multibyte locale, and thus did not fail
even without the fix.
I'm amending the patch (not yet pushed) with this:
diff --git a/tests/backslash-s-and-repetition-operators
b/tests/backslash-s-and-repetition-operators
index 562646d..b1267f8 100755
--- a/tests/backslash-s-and-repetition-operators
+++ b/tests/backslash-s-and-repetition-operators
@@ -9,6 +9,11 @@
. "${srcdir=.}/init.sh"; path_prepend_ ../src
+require_en_utf8_locale_
+
+LC_ALL=en_US.UTF-8
+export LC_ALL
+
printf ' \n' > in || framework_failure_
fail=0