regcomp: skip collseq lookup when there are no rules
authorUlrich Drepper <drepper@redhat.com>
Mon, 4 Jan 2010 09:59:51 +0000 (10:59 +0100)
committerJim Meyering <meyering@redhat.com>
Mon, 4 Jan 2010 15:22:18 +0000 (16:22 +0100)
* lib/regcomp.c (lookup_collation_sequence_value): From glibc:
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a532a41df58

ChangeLog
lib/regcomp.c

index a3c71c0..f906c28 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2010-01-04  Jim Meyering  <meyering@redhat.com>
 
+       regcomp: skip collseq lookup when there are no rules
+       * lib/regcomp.c (lookup_collation_sequence_value): From glibc:
+       http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a532a41df58
+
        regcomp: recognize ill-formed { } expressions
        * lib/regcomp.c (parse_dup_op): From glibc:
        http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a87cd2894cb
index 629f971..8ba0616 100644 (file)
@@ -2804,7 +2804,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
       return elem;
     }
 
-  /* Local function for parse_bracket_exp used in _LIBC environement.
+  /* Local function for parse_bracket_exp used in _LIBC environment.
      Look up the collation sequence value of BR_ELEM.
      Return the value if succeeded, UINT_MAX otherwise.  */
 
@@ -2828,7 +2828,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
        }
       else if (br_elem->type == MB_CHAR)
        {
-         return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
+         if (nrules != 0)
+           return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
        }
       else if (br_elem->type == COLL_SYM)
        {