(Ffind_coding_systems_region_internal): Cache checked characters.

This commit is contained in:
YAMAMOTO Mitsuharu 2009-06-19 08:39:44 +00:00
parent 00b9254ce3
commit 0e727afa9d
2 changed files with 11 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2009-06-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* coding.c (Ffind_coding_systems_region_internal):
Cache checked characters.
2009-06-18 Kenichi Handa <handa@m17n.org>
* coding.c (decode_coding_iso_2022): Check MSB of bytes more

View file

@ -8640,7 +8640,7 @@ DEFUN ("find-coding-systems-region-internal",
EMACS_INT start_byte, end_byte;
const unsigned char *p, *pbeg, *pend;
int c;
Lisp_Object tail, elt;
Lisp_Object tail, elt, work_table;
if (STRINGP (start))
{
@ -8698,6 +8698,7 @@ DEFUN ("find-coding-systems-region-internal",
while (p < pend && ASCII_BYTE_P (*p)) p++;
while (p < pend && ASCII_BYTE_P (*(pend - 1))) pend--;
work_table = Fmake_char_table (Qnil, Qnil);
while (p < pend)
{
if (ASCII_BYTE_P (*p))
@ -8705,6 +8706,9 @@ DEFUN ("find-coding-systems-region-internal",
else
{
c = STRING_CHAR_ADVANCE (p);
if (!NILP (char_table_ref (work_table, c)))
/* This character was already checked. Ignore it. */
continue;
charset_map_loaded = 0;
for (tail = coding_attrs_list; CONSP (tail);)
@ -8736,6 +8740,7 @@ DEFUN ("find-coding-systems-region-internal",
p = pbeg + p_offset;
pend = pbeg + pend_offset;
}
char_table_set (work_table, c, Qt);
}
}