Commit 6ae52848 authored by Paul Eggert's avatar Paul Eggert
Browse files

* chartab.c (sub_char_table_ref_and_range): Redo to avoid overflow

concerns.
parent d284567f
2011-03-23 Paul Eggert <eggert@cs.ucla.edu>
 
* chartab.c (sub_char_table_ref_and_range): Redo to avoid overflow
concerns.
* term.c (produce_glyphless_glyph): Remove unnecessary test.
 
* cm.c (calccost): Turn while-do into do-while, for clarity.
......@@ -215,7 +215,7 @@ sub_char_table_ref_and_range (Lisp_Object table, int c, int *from, int *to, Lisp
struct Lisp_Sub_Char_Table *tbl = XSUB_CHAR_TABLE (table);
int depth = XINT (tbl->depth);
int min_char = XINT (tbl->min_char);
int max_char = min_char + chartab_chars[depth - 1] - 1;
int char_offset_lim = chartab_chars[depth - 1];
int chartab_idx = CHARTAB_IDX (c, depth, min_char), idx;
Lisp_Object val;
......@@ -244,8 +244,9 @@ sub_char_table_ref_and_range (Lisp_Object table, int c, int *from, int *to, Lisp
break;
}
}
while ((c = min_char + (chartab_idx + 1) * chartab_chars[depth]) <= max_char
&& *to >= c)
while ((c = (chartab_idx + 1) * chartab_chars[depth]) < char_offset_lim
&& (c += min_char) <= *to)
{
Lisp_Object this_val;
......
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