]> git.eshelyaron.com Git - emacs.git/commitdiff
* chartab.c (sub_char_table_ref_and_range): Redo for slight
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 27 Mar 2011 08:10:27 +0000 (01:10 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 27 Mar 2011 08:10:27 +0000 (01:10 -0700)
efficiency gain, and to bypass a gcc -Wstrict-overflow warning.

src/ChangeLog
src/chartab.c

index 8a20c06b41c2e09584c66d460177108af2521e8e..6127bc0e8da37b512921b4f12457e0d592454371 100644 (file)
@@ -1,5 +1,8 @@
 2011-03-27  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * chartab.c (sub_char_table_ref_and_range): Redo for slight
+       efficiency gain, and to bypass a gcc -Wstrict-overflow warning.
+
        * keyboard.c, keyboard.h (num_input_events): Now size_t.
        This avoids undefined behavior on integer overflow, and is a bit
        more convenient anyway since it is compared to a size_t variable.
index 85aa5932ac3e1a622cb8935898c4cbf51e74fea1..9ad182131e94bb80bd39d95fc861cdc374d393de 100644 (file)
@@ -215,7 +215,6 @@ 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 chartab_idx = CHARTAB_IDX (c, depth, min_char), idx;
   Lisp_Object val;
 
@@ -244,8 +243,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])
+         < chartab_chars[depth - 1])
+        && (c += min_char) <= *to)
     {
       Lisp_Object this_val;