]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp.h (lint_assume): New macro.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 18:09:17 +0000 (11:09 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 18:09:17 +0000 (11:09 -0700)
* composite.c (composition_gstring_put_cache):
* ftfont.c (ftfont_shape_by_flt): Use it to pacify GCC 4.6.0.

src/ChangeLog
src/composite.c
src/ftfont.c
src/lisp.h

index b0a461fb108350ce25532f684349e61a034269ce..62d6a5b4a04c1d97f9fe7921c466df989bb6d3bd 100644 (file)
@@ -1,5 +1,9 @@
 2011-06-18  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * lisp.h (lint_assume): New macro.
+       * composite.c (composition_gstring_put_cache):
+       * ftfont.c (ftfont_shape_by_flt): Use it to pacify GCC 4.6.0.
+
        * editfns.c: Omit unnecessary forward decls, to simplify future changes.
 
        * ftfont.c (ftfont_shape_by_flt): Use signed integers for lengths.
index 1bc7b435e113cf141f9e3c256b9f2fa628c86cc8..f494f454a9c9b6e87b452fc2f751f3d67b12786e 100644 (file)
@@ -680,6 +680,7 @@ composition_gstring_put_cache (Lisp_Object gstring, EMACS_INT len)
       len = j;
     }
 
+  lint_assume (len <= TYPE_MAXIMUM (EMACS_INT) - 2);
   copy = Fmake_vector (make_number (len + 2), Qnil);
   LGSTRING_SET_HEADER (copy, Fcopy_sequence (header));
   for (i = 0; i < len; i++)
index d1effaa88a92a12b3008b1bf8ccb75429be17c51..4e313a89021d4e5c2a99fe691cc55a0776133100 100644 (file)
@@ -2412,7 +2412,10 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font,
       if (CHAR_VARIATION_SELECTOR_P (c))
        with_variation_selector++;
     }
+
   len = i;
+  lint_assume (len <= TYPE_MAXIMUM (EMACS_INT) - 2);
+
   if (with_variation_selector)
     {
       setup_otf_gstring (len);
index 1e3036344f5eed384ae74ec014b0908416c55bc1..0d51fc7be715e4bc309aae538b55325c6cc69558 100644 (file)
@@ -3608,11 +3608,19 @@ extern void init_system_name (void);
       ? 0                                              \
       : (wrong_type_argument (Qlistp, (list))), 1))
 
-/* Use this to suppress gcc's `...may be used before initialized' warnings. */
+/* Use this to suppress gcc's warnings. */
 #ifdef lint
+
+/* Use CODE only if lint checking is in effect.  */
 # define IF_LINT(Code) Code
+
+/* Assume that the expression COND is true.  This differs in intent
+   from 'assert', as it is a message from the programmer to the compiler.  */
+# define lint_assume(cond) ((cond) ? (void) 0 : abort ())
+
 #else
 # define IF_LINT(Code) /* empty */
+# define lint_assume(cond) ((void) (0 && (cond)))
 #endif
 
 /* The ubiquitous min and max macros.  */