summaryrefslogtreecommitdiffstats
path: root/lib/libc/regex
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1997-04-04 19:40:49 +0000
committerache <ache@FreeBSD.org>1997-04-04 19:40:49 +0000
commitf9d135173d727a644b7a44b7a30a67686041501c (patch)
treeb328fa35566f85f2b500c3ccac55b6f316c473a0 /lib/libc/regex
parent9d6ffe345c05ee132a655118945899599fa3cf4d (diff)
downloadFreeBSD-src-f9d135173d727a644b7a44b7a30a67686041501c.zip
FreeBSD-src-f9d135173d727a644b7a44b7a30a67686041501c.tar.gz
Speedup in case locale not used
Diffstat (limited to 'lib/libc/regex')
-rw-r--r--lib/libc/regex/regcomp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/libc/regex/regcomp.c b/lib/libc/regex/regcomp.c
index 98d3755..8bb1355 100644
--- a/lib/libc/regex/regcomp.c
+++ b/lib/libc/regex/regcomp.c
@@ -804,12 +804,18 @@ register cset *cs;
if (start == finish)
CHadd(cs, start);
else {
- (void)REQUIRE(__collate_range_cmp(start, finish) <= 0, REG_ERANGE);
- for (i = CHAR_MIN; i <= CHAR_MAX; i++) {
- if ( __collate_range_cmp(start, i) <= 0
- && __collate_range_cmp(i, finish) <= 0
- )
+ if (__collate_load_error) {
+ (void)REQUIRE((uch)start <= (uch)finish, REG_ERANGE);
+ for (i = (uch)start; i <= (uch)finish; i++)
CHadd(cs, i);
+ } else {
+ (void)REQUIRE(__collate_range_cmp(start, finish) <= 0, REG_ERANGE);
+ for (i = CHAR_MIN; i <= CHAR_MAX; i++) {
+ if ( __collate_range_cmp(start, i) <= 0
+ && __collate_range_cmp(i, finish) <= 0
+ )
+ CHadd(cs, i);
+ }
}
}
break;
OpenPOWER on IntegriCloud