mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 04:10:27 -08:00
Don't generate useless range table entries for ASCII chars
In multibyte regexps, each ASCII char or range in a character alternative produces a nonsense range table entry in addition to the correct bits in the ASCII bitmap. Those entries do not match anything but waste space and time. * src/regex-emacs.c (regex_compile): Don't generate reversed intervals.
This commit is contained in:
parent
9dccaf8a5c
commit
f189e5dc10
1 changed files with 14 additions and 11 deletions
|
|
@ -2113,17 +2113,20 @@ regex_compile (re_char *pattern, ptrdiff_t size,
|
|||
if (CHAR_BYTE8_P (c1))
|
||||
c = BYTE8_TO_CHAR (128);
|
||||
}
|
||||
if (CHAR_BYTE8_P (c))
|
||||
{
|
||||
c = CHAR_TO_BYTE8 (c);
|
||||
c1 = CHAR_TO_BYTE8 (c1);
|
||||
for (; c <= c1; c++)
|
||||
SET_LIST_BIT (c);
|
||||
}
|
||||
else if (multibyte)
|
||||
SETUP_MULTIBYTE_RANGE (range_table_work, c, c1);
|
||||
else
|
||||
SETUP_UNIBYTE_RANGE (range_table_work, c, c1);
|
||||
if (c <= c1)
|
||||
{
|
||||
if (CHAR_BYTE8_P (c))
|
||||
{
|
||||
c = CHAR_TO_BYTE8 (c);
|
||||
c1 = CHAR_TO_BYTE8 (c1);
|
||||
for (; c <= c1; c++)
|
||||
SET_LIST_BIT (c);
|
||||
}
|
||||
else if (multibyte)
|
||||
SETUP_MULTIBYTE_RANGE (range_table_work, c, c1);
|
||||
else
|
||||
SETUP_UNIBYTE_RANGE (range_table_work, c, c1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue