]> git.eshelyaron.com Git - emacs.git/commitdiff
* alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 3 Apr 2011 05:41:46 +0000 (22:41 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 3 Apr 2011 05:41:46 +0000 (22:41 -0700)
Otherwise, GCC 4.6.0 optimizes the loop check away since the check
can always succeed if overflow has undefined behavior.

src/ChangeLog
src/alloc.c

index 2c8a95c3571fb41563b68045354f1a859e643561..62731238903893827d3a0e9226bf57ab64d9ee3e 100644 (file)
@@ -1,5 +1,9 @@
 2011-04-03  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int.
+       Otherwise, GCC 4.6.0 optimizes the loop check away since the check
+       can always succeed if overflow has undefined behavior.
+
        * search.c (boyer_moore, wordify): Remove vars set but not used.
        (wordify): Omit three unnecessary tests.
 
index 07f1caae46b24773ec1615c7c924ba5413d87f00..54c4760ababf757d27aa48a2e74711b3b4c9027c 100644 (file)
@@ -5221,7 +5221,7 @@ int last_marked_index;
    links of a list, in mark_object.  In debugging,
    the call to abort will hit a breakpoint.
    Normally this is zero and the check never goes off.  */
-static int mark_object_loop_halt;
+static size_t mark_object_loop_halt;
 
 static void
 mark_vectorlike (struct Lisp_Vector *ptr)
@@ -5278,7 +5278,7 @@ mark_object (Lisp_Object arg)
   void *po;
   struct mem_node *m;
 #endif
-  int cdr_count = 0;
+  size_t cdr_count = 0;
 
  loop: