Commit f189e5dc authored by Mattias Engdegård's avatar Mattias Engdegård

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.
parent 9dccaf8a
Pipeline #5043 passed with stage
in 55 minutes and 11 seconds
......@@ -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);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment