diff options
| author | Andrey A. Chernov <ache@FreeBSD.org> | 1997-04-04 19:40:49 +0000 |
|---|---|---|
| committer | Andrey A. Chernov <ache@FreeBSD.org> | 1997-04-04 19:40:49 +0000 |
| commit | b5a6eb1833569eb5944d96f7d6ffba53ddfd372f (patch) | |
| tree | b8c4d22afc72b3636b1c83d6bb974af5aa81a40a /lib/libc/regex/regcomp.c | |
| parent | 92fb126230005f57141941c82abc6e390dff7006 (diff) | |
Notes
Diffstat (limited to 'lib/libc/regex/regcomp.c')
| -rw-r--r-- | lib/libc/regex/regcomp.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/libc/regex/regcomp.c b/lib/libc/regex/regcomp.c index 98d3755baaed..8bb135504c83 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; |
